程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。8 t/ c5 A( z5 x
#include <linux/init.h>
% C! B3 ?" ]& L* {#include <linux/module.h>
  `0 N: i, [4 M3 r1 B#include <linux/kernel.h>, @& x5 K% k  s. t4 u" P, k+ y
#include <linux/types.h>, n: j5 q6 F6 ~1 Q' L
#include <linux/gpio.h>
3 e/ p7 A7 a) f) \' d6 U$ C#include <linux/leds.h>  `+ \% K5 s( b. {5 m: F0 ], d! b
#include <linux/platform_device.h>6 ?9 S, a4 E( v$ B9 u2 G* |

- g- I7 B: o: X/ I#include <asm/mach-types.h>' w$ G& d3 X5 B, I% {
#include <asm/mach/arch.h>/ C2 F- g2 t. F& @( l+ A6 P
#include <mach/da8xx.h>" f1 y4 J" B5 B! U& a! |  }
#include <mach/mux.h>
$ D+ \( l, {2 c& N" q% |! c; n6 j) P. ]) s0 J( b& @
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
# F: _% Q, B% E5 q! t! ]#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
6 {6 S* W6 ?1 i' H#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
) k; c# h* @0 k" q: ?#define DA850_USER_LED3        GPIO_TO_PIN(0, 2). c! g" r) U- s  M4 C2 I, @
# F8 z9 ^3 M& t$ ]+ ~
/* assign the tl som board LED-GPIOs*/: P; J( n  a2 E5 b: s# o) N
static const short da850_evm_tl_user_led_pins[] = {
. ?% X$ u% x$ m" ?! i8 W0 c        /* These pins are definition at <mach/mux.h> file */
# H$ [5 ^' O- P. k% B/ _, X        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
6 z; f: K/ g& p; }( _2 T5 x6 i" g        -1+ P/ H1 n- p2 t2 ]+ I/ Q2 Q
};4 h; z1 a# k. u
1 `$ y, O  {$ J& ^. K2 f
static struct gpio_led da850_evm_tl_leds[] = {& K& t/ Z8 S1 ^( H* Z
        {
% }! B$ d: b, k. E; B                .active_low = 0,( ]/ Q$ ^- }- U. u$ p; w3 G
                .gpio = DA850_USER_LED0,: [+ j' P( K, q8 [8 {* {
                .name = "user_led0",
+ Z" y7 P" ?" }3 y( ?7 u" x                .default_trigger = "default-on",
' R% c% h' p% }9 S        },, m6 l0 u$ a* v8 P( F- U" u( C
        {
1 t. G* V) P' f$ P                .active_low = 0,
; ]6 I- h& q( v4 A0 w, F; o                .gpio = DA850_USER_LED1,
7 m* _: \  c$ ?                .name = "user_led1",8 n6 A, @8 @" L+ B0 j% y7 g
                .default_trigger = "default-on",1 O. ^+ l, Q3 Y$ D2 ]& I. d0 k2 I
        },3 k' H" ^6 n4 Y) w* Q
        {
. v8 Z; O% h9 o                .active_low = 0,
' w1 p8 v) v# q                .gpio = DA850_USER_LED2,
% |" Q- i% a4 Q                .name = "user_led2",
% k4 J* h3 H+ L                .default_trigger = "default-on",; m; v. f8 B0 @" {% L) `# |
        },
3 c, T, p% U& s7 f5 L% {        {" b- P3 x) N5 n/ u6 u8 ]
                .active_low = 0,
5 v, Y' g1 y0 P+ ]4 X                .gpio = DA850_USER_LED3,
8 n* x# o0 `' z& t# o                .name = "user_led3",. x) X; k9 X- t, U" `7 B
                .default_trigger = "default-on",
: n8 @0 g" B$ I0 c6 j* U5 Z) ~* ~0 Z5 Q        },
1 d2 t2 a$ s8 x( i. j. R};, }$ ?* C. i* g4 }: _3 M# p8 g

9 Z2 v- G' y8 kstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
" E- P/ ^* z; t7 i1 i' n: S: c        .leds = da850_evm_tl_leds,
* D8 }- i8 B6 D3 j* c" ^        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
# D: e. m/ v, y, r4 d# i3 d+ L};
1 g  x% T8 i; R0 Q; L5 N  A7 O* c) R9 A' G  ]2 P5 m- e
static void led_dev_release(struct device *dev)
# ~9 \; m$ f% x4 i; p& `{4 s% L' a# j1 T4 {
};( \# t9 }( ^; i4 k

9 W# ?+ z' s3 ^: @$ h- Kstatic struct platform_device da850_evm_tl_leds_device = {
  B7 t6 Z( v; D6 N" d; w        .name                = "leds-gpio",* Y! Z& I& J8 d5 ^# h% h
        .id                = 1,7 i8 P: r% Q; j& k
        .dev = {
: E% v) H# T1 t2 |) h3 B                .platform_data = &da850_evm_tl_leds_pdata,  `+ l3 V# R) A  q: ?+ b# [; N* I
                .release = led_dev_release,# n6 T9 Z1 J# g; Z
        }- t* k+ `) \+ J1 U1 }
};& k/ K* y  n# C6 I) A3 z. W

  V3 x% e  l3 @9 g/ |" F5 x6 Ystatic int __init led_platform_init(void)& }2 Y- Z: q& Y. @# T" B
{: z7 V/ Q' V& K
        int ret;
8 R# m( @" ]5 a. I3 V#if 0. A+ W9 G8 l, g, r
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
  h! H; u; q- L9 R% ?# O. M/ |        if (ret)- P3 G$ |% u  r1 ~$ O
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
' p8 M% E$ m; G. A. ^- s0 n  }                                "%d\n", ret);: i/ ?3 J! D0 R& ~3 _
#endif
3 O/ ?) ?& ~) P% g9 u        ret = platform_device_register(&da850_evm_tl_leds_device);
6 P: l. C& g. |& n8 u        if (ret)( ^( C  n' r9 ~8 s( J: D7 A
                pr_warning("Could not register som GPIO expander LEDS");) M! v- I9 D, \
        else) g3 r- @- G3 k3 o* I
                printk(KERN_INFO "LED register sucessful!\n");  U8 o0 z* R$ D; a/ N' E( r
8 s* H( ^* ]8 C/ Z: C
        return ret;
3 I4 ]* N0 E4 Q4 {' ]5 f}
! g8 x% X1 }' g0 g1 x" u* F8 ~" I
static void __exit led_platform_exit(void)( U5 `2 O+ ]3 W4 v4 }
{
  E* D7 ^" w4 [  G& [. d        platform_device_unregister(&da850_evm_tl_leds_device);
; V( |" D# ~. q; U8 }: Q; k  R! G+ }& I7 Z( d* o; L' m
        printk(KERN_INFO "LED unregister!\n");
. y% T7 H9 Q0 D& Z}
! p# g. Y# h# c# B# j: M& I# k6 h* a3 R- l, {2 d1 I" Z9 V
module_init(led_platform_init);
2 X8 P4 O7 B( i4 y% ^0 a4 ^module_exit(led_platform_exit);5 r8 B" G# F% s/ \, x9 @$ \

0 P' A2 H. I+ XMODULE_DESCRIPTION("Led platform driver");* c# N2 L. _% F) K
MODULE_AUTHOR("Tronlong");' H" T  q4 T- _: M6 M9 C. l
MODULE_LICENSE("GPL");
2 j' z* z7 A3 \: |) [% y- `
# T" W- [+ o4 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-2-23 09:50 , Processed in 0.041108 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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