程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7261|回复: 0
打印 上一主题 下一主题

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。* S: ]0 Z% R* N+ d4 v8 [* W" U
#include <linux/init.h>
8 b! p# j( u0 R#include <linux/module.h>
& C1 e1 k) C0 R5 |5 }& Y#include <linux/kernel.h>/ S1 I; [: P0 W% W* [4 F6 i
#include <linux/types.h>
. ], @2 ]- s( E& B" v- h6 t' u#include <linux/gpio.h>8 n( Q! C) x# ]) Y+ x
#include <linux/leds.h>
( p6 a, K. H' I: w( L. f6 q#include <linux/platform_device.h>
+ W0 A0 x$ ^* q& D! X/ q
1 V, x% l& s2 z7 d0 s. J#include <asm/mach-types.h>
0 j3 `; W* I* H#include <asm/mach/arch.h>
# E8 h, m! p1 S1 Y3 x3 T- N#include <mach/da8xx.h>+ K! R4 R5 @  V4 Y
#include <mach/mux.h>7 {1 F1 z/ {, k5 R. _: |" y

# `2 R. ]! y# n% R5 S" @#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
+ I' l5 V% ^7 e4 t/ ?! W1 O#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)6 F0 h% E+ F# r4 U  ?
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)9 }/ ^. C3 \( V2 {; k
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2): g7 z' g# Z: l! s

, V+ J! |2 ~; T7 O2 J/* assign the tl som board LED-GPIOs*/- J8 K* V& B: `% \8 F: w! I
static const short da850_evm_tl_user_led_pins[] = {
. d' `: s0 z( @, i  z        /* These pins are definition at <mach/mux.h> file */3 `: g# q2 o; f+ p
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,. t; x: V! i  |) ?$ c! V2 H
        -1
" m( j( k( ]5 \6 y+ v* @};
% Q" [) p" a  b# e) F1 g) H" [
" O5 u0 I2 i" \; a% U8 jstatic struct gpio_led da850_evm_tl_leds[] = {
% q. s' \8 S5 o: o# X8 [# ?6 j        {
; o( D/ M" o2 Z. y% D6 }                .active_low = 0,
, V( K3 y3 v/ Y, i$ M. C3 R                .gpio = DA850_USER_LED0,
7 `# E( p4 u+ S1 u4 W# k% S' i                .name = "user_led0",
& X: @. W. B+ y# T& ]- H                .default_trigger = "default-on",
1 j" I$ `- E2 H# t" U7 U0 z0 Y- m        },
* E# Q! n; v4 J, g        {' P/ J7 h/ A& W. P
                .active_low = 0,
4 d5 ]/ [( ^' B& Q2 v$ K& l                .gpio = DA850_USER_LED1,$ e  y$ |5 o( H' y/ }3 `
                .name = "user_led1",
4 H, h8 K6 w  D, F5 e5 F2 G2 n  ?                .default_trigger = "default-on",9 N* j* q. A2 V! Q3 K( r, g* ~
        },
0 I+ f% z: s/ D        {# f9 Z4 G: Y2 b
                .active_low = 0,; n& E* I/ m0 Q1 m+ \
                .gpio = DA850_USER_LED2,7 O0 C4 B; I$ U5 l- F  c
                .name = "user_led2",4 J/ q% j- W) N! i0 Z% Y. q
                .default_trigger = "default-on",; i- y7 X5 H& q1 t
        },1 F. w1 Y5 Q9 \- _1 l5 H
        {) D7 `, b0 h- j7 G
                .active_low = 0,
4 ?/ @/ n" Q$ B$ t, T7 Q                .gpio = DA850_USER_LED3,6 }" ]5 k0 J/ ?- {5 P# S
                .name = "user_led3",
7 U0 z! \$ l3 |# m1 a  _/ t                .default_trigger = "default-on",# A4 n( x9 Y8 [2 J
        },7 G! p( }) h7 c- L) [
};7 f; s5 N) v0 t* ~3 D
+ ]: H+ r/ V8 v* O' I
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
: b% S; o8 q+ D' k, C2 H/ O        .leds = da850_evm_tl_leds,
. Z8 `& v7 ?2 ]  M) c7 k        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
. j+ d0 m$ N" U( c/ b8 D};! H, ~6 C8 I0 g% f4 {1 a' i. b/ [, p
+ m, K& w1 t% f  m! ]6 Y  n" w. R: K
static void led_dev_release(struct device *dev)
, a2 z; H5 L' S. ~% @1 r{
  N/ `4 [* M9 z};
! O+ l! \4 e7 ]5 r5 g, g# r
! p  q6 L8 \8 A% ?static struct platform_device da850_evm_tl_leds_device = {
- z" f# J0 m. F( s9 Y        .name                = "leds-gpio",
7 _, R; W; b8 }. E3 n8 U* x! Z        .id                = 1,& M, v$ Z& D) z
        .dev = {: f8 u, G* E- Z) |
                .platform_data = &da850_evm_tl_leds_pdata,
- M; p7 [: R) e0 m6 ~- `3 B5 a                .release = led_dev_release,
1 ]- l. b8 C: u  _4 t! ]        }
# ~3 j9 d$ v/ c& i+ f. M3 Q};* s& a+ N/ ?& S5 G6 A# J7 U4 G
8 n: `" h' g' t8 n! a& z
static int __init led_platform_init(void)
% x+ L' Y3 z* H9 x{
5 N3 X3 C" o7 P6 x        int ret;
# c5 f! \# E" a3 M( j, J7 l#if 0
% T4 E2 }& T1 ]3 M. a5 u1 \        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
$ H: w; E9 F, E" d+ W9 Y        if (ret)
) B% ?" m( v& S! `! d) X                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
% ]# w% K7 J/ k7 t- N/ t, l                                "%d\n", ret);
3 j, |. Z3 e2 t& E/ A#endif- Q" E# Z+ p# c) e+ p  [# L. L# n
        ret = platform_device_register(&da850_evm_tl_leds_device);
9 t: v0 [* o' X        if (ret)
* V+ u% c1 T8 a& O4 U) M+ t                pr_warning("Could not register som GPIO expander LEDS");  [$ P0 A- J) Z7 M2 N$ r: ^
        else! W, [* g* V, R! ]* T% {4 H; ?3 n
                printk(KERN_INFO "LED register sucessful!\n");& `% O& v' E; n! \8 Q  z" d
6 j4 _! Y; n% y" q/ ?2 H
        return ret;  C8 `, ~+ O2 u' ?, R" P
}
1 P$ @  t0 R2 {$ N8 R3 D8 I
0 a1 A1 [4 p' Bstatic void __exit led_platform_exit(void)
  f6 L, o4 S  o, L) N2 p7 ^{& }5 n; O: G) n: S
        platform_device_unregister(&da850_evm_tl_leds_device);" l0 H/ ?* e! X. }9 m- n! b& e6 H

3 ^  J8 B8 n, r- L3 L1 x1 V        printk(KERN_INFO "LED unregister!\n");7 A& G  P7 j. K# h- ?- H
}( |5 Q7 P- \4 r% B; Y
! i% |' i% \* V4 x3 T9 a0 N
module_init(led_platform_init);. {5 k0 E9 y4 F3 E5 d5 i$ f
module_exit(led_platform_exit);
5 J2 K& ]$ J9 v  W& }5 c/ Y' h/ J. E( m$ d* l/ d
MODULE_DESCRIPTION("Led platform driver");
  u6 o8 V: [0 t- \4 J8 yMODULE_AUTHOR("Tronlong");6 I7 Z: [3 r$ F+ J8 a5 I$ P
MODULE_LICENSE("GPL");0 u4 s. Z' o7 h" d5 i9 O8 Y

: i2 K3 u+ `- f2 s, I% r9 d, A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-14 19:50 , Processed in 0.040484 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表