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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。7 ]9 o, E8 j' @" O# g- W2 @
#include <linux/init.h>
( J* O  C% c. o, C9 i! i$ ]#include <linux/module.h>. R' n- C: M1 u+ H- T) u7 e7 ~
#include <linux/kernel.h>
; z8 r7 `! q' ]#include <linux/types.h>8 y7 u' w+ `; Z* b! n
#include <linux/gpio.h>
' z6 T1 k7 K5 O3 o) Y1 N#include <linux/leds.h>
- F$ u3 t7 |( j$ e#include <linux/platform_device.h>
" {7 O8 W, g( w% Z
4 t, D1 z5 O+ m4 x#include <asm/mach-types.h>
4 \# N  A1 d3 x6 ?$ ]& n& e#include <asm/mach/arch.h>5 K8 {* v: m$ @" \6 o9 Q3 B8 i& j/ v
#include <mach/da8xx.h>
7 Y& j. l- B' L2 V) _$ {#include <mach/mux.h>
3 p7 I0 d' z5 q" s* x( J" E% \
$ p  z: ]' L# Z. h; k; u$ n#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
8 n4 y8 u+ n" e$ e! Y2 g/ r/ D#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
4 i+ j) t) h# |$ \* A# n+ ?#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
4 V+ O9 L/ S" h9 \#define DA850_USER_LED3        GPIO_TO_PIN(0, 2). E  V7 h- C. E  A
' n. w( V3 z* Z( J/ O3 R) h" V
/* assign the tl som board LED-GPIOs*/2 g% y/ b6 U: M. C5 M: `7 P
static const short da850_evm_tl_user_led_pins[] = {/ P1 t; ^1 }0 G' A$ F* g
        /* These pins are definition at <mach/mux.h> file */8 l9 h6 i4 K+ q) d7 m! X$ Y
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,6 ^- T5 K4 u1 Z9 d( e' T
        -1. @# D) a$ a/ S4 K+ i) x
};4 D  M5 c; A* l( y" x1 E- t

) J5 U) o1 S8 o7 L6 p+ j1 @static struct gpio_led da850_evm_tl_leds[] = {
. p; U2 d6 t" H        {
- q& G# r( j$ n" o# W% p* o1 u                .active_low = 0,
% ^1 f( ]; y) u4 ?; H                .gpio = DA850_USER_LED0,
! L' a! `9 j, w! F                .name = "user_led0",
6 C" |. U" ?( T, b; a3 z* X                .default_trigger = "default-on",
3 H! H* V; ~, E* w7 V        },
6 c! F* g, X' p1 W6 E8 C        {
, D- u! a) V8 E  ~                .active_low = 0,
0 B. l2 J* x, n3 ^7 G                .gpio = DA850_USER_LED1,, R% M2 n, V1 C
                .name = "user_led1",
7 ]* e. x" X; Q! U$ s( n                .default_trigger = "default-on",
* j4 w& F5 Y# y% |9 i5 v0 \3 _        },+ C$ i4 @+ A. e7 v" D* b. H, i
        {
: ]. `7 L# V4 E  ^. R0 D" O. U: I                .active_low = 0,
- K  O, I+ v/ y/ C/ K                .gpio = DA850_USER_LED2,
9 W0 L. }7 Q5 t# ~7 `, i                .name = "user_led2",4 q& ]% T( Y$ E
                .default_trigger = "default-on",& Q# i" Y! Z+ ~7 V
        },
) M5 _; P* {& B        {" O1 G0 N9 T) G6 ~2 U& m0 P1 f% ?
                .active_low = 0,
! P% i1 P3 ~+ K. E6 M4 {' ~; D  s8 A                .gpio = DA850_USER_LED3,
/ m' F. y7 |& |                .name = "user_led3",+ d) T& d- t! J% @8 Y8 X6 `
                .default_trigger = "default-on",
0 P" l4 ^  J! `, u! s3 y        },
2 H' U( y. v4 A7 m6 O};& S- y$ @$ Y4 |+ w2 I* b4 A
8 a! ?& e3 f; N" d  }
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
. S6 E! M1 }& f$ m7 v        .leds = da850_evm_tl_leds,
  ]  u+ q" v- F( X, S        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
/ _$ v$ V0 U- d7 H};
8 h0 }! ]# r0 U6 I7 m9 X& b1 _% w5 z7 Q4 X
static void led_dev_release(struct device *dev)
* w/ s) Q7 l9 K. O+ Y/ B{4 U& v- m# q7 n& c. x
};
+ s; D) p2 M( Y; d  Q& X* l; A0 z0 a2 k
static struct platform_device da850_evm_tl_leds_device = {, c4 S5 M- y; f9 F
        .name                = "leds-gpio",9 ~- ]! N! y/ d; J( _1 D
        .id                = 1,; ]% @- f; S+ F5 S
        .dev = {/ c+ e/ B+ I8 v
                .platform_data = &da850_evm_tl_leds_pdata,
" d6 c  U& ?5 E; K  z4 ~                .release = led_dev_release,3 p! ?8 ?2 w* _, ?8 L8 m( k
        }
( R* J) j+ A) D};
" _' W( E: p+ ?2 i2 h% p3 e
5 e( _8 o4 [* h- hstatic int __init led_platform_init(void)
( {  }: v' u" U5 k! o+ q6 J+ N, v{7 w6 V0 N1 G+ n$ j; n( n: X
        int ret;# P/ H8 o" `5 m, e5 ^
#if 06 J2 p$ `# a7 t+ G$ E4 Z6 k& V
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);0 O/ w1 y" ^9 O6 x& _, x
        if (ret)- k" ?4 C6 C$ `" S. c
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
6 L! v" O$ z7 r: a0 L; A                                "%d\n", ret);  a" H6 |, J1 r& M$ `) l
#endif
) F7 }! r: Z5 m& b" o/ G' E( C8 u        ret = platform_device_register(&da850_evm_tl_leds_device);: B, I9 A* ]; X0 O  w8 f
        if (ret)
" \# N% y$ @  E- Q& V: L4 k' A                pr_warning("Could not register som GPIO expander LEDS");
5 W. v# ^7 F; \3 \6 S8 O        else1 `. k) L9 x' i) f
                printk(KERN_INFO "LED register sucessful!\n");
8 I: V% d7 U4 K! H: H+ T
* |# q/ N( H* h+ x  P6 f        return ret;- n- l: m! u; j& e- F, j* s
}
0 a% E/ S8 C& [8 F6 F9 a* Q- L2 ?! B0 ~: e+ L$ W2 [$ d  }. V+ [  f4 A% [2 m
static void __exit led_platform_exit(void)% t+ U& k9 b' s" Y, C# c" A: z. F
{
. H& ~" C) A  U/ |+ b# l        platform_device_unregister(&da850_evm_tl_leds_device);) j/ r( g) z3 N3 v$ }) ^
/ M0 g9 K% z/ u0 G/ z+ @* H
        printk(KERN_INFO "LED unregister!\n");) t% A/ s- d0 h8 c* m
}- i9 L3 C: p* q  T6 [! [+ N2 ], B

/ g& Z8 _: Z0 ]module_init(led_platform_init);) W! u+ d2 L7 g9 ?; A
module_exit(led_platform_exit);
4 i2 A. e4 p- g( w% z; ]; e# R. o' _. x4 N
MODULE_DESCRIPTION("Led platform driver");
3 F" k" [( d, N1 V0 `MODULE_AUTHOR("Tronlong");
4 B+ P! H! O: r. V* SMODULE_LICENSE("GPL");$ ]$ S1 X7 w7 J& v$ {: `
/ M: j' X' H8 Q+ |6 x# ^$ ]. H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 02:27 , Processed in 0.039967 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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