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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。; t: ]% c- }3 t( @1 c6 q
#include <linux/init.h>
" t* `& b! w. ]" p3 c#include <linux/module.h>
: }0 o, ]! a# ?* S. \" Q3 w#include <linux/kernel.h>2 f( p$ H  v0 W: i  z/ I! U8 E. x! l
#include <linux/types.h>" {& J7 K) \# |/ c( r. V" ?7 i
#include <linux/gpio.h>! E( Z- p! {! m. m8 ?: S- K
#include <linux/leds.h>( I! N' s3 \6 G' e+ Z' ~* I+ N0 I
#include <linux/platform_device.h>
3 d8 X4 }% U4 X! U8 y* x# V( c* Q: Z' V5 f. I2 q6 M* W# ?0 B0 r
#include <asm/mach-types.h>
. c2 K% N% L# X. |! z0 g#include <asm/mach/arch.h>
# S. u0 {0 ~- N6 p$ w0 A0 R#include <mach/da8xx.h>
3 s$ w. Y: _3 b7 A+ Z9 k#include <mach/mux.h>
8 |3 ^$ T: L- J, v, q$ x( f" _& l. Z- s7 D
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)1 N; R/ S3 q# S; W
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)8 ?) ^+ q/ ~5 S5 d! E2 g7 J
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
& I$ v! K& ?' y0 K7 ~#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 O% z4 [0 O3 |! _: [% L( @3 m) ~
. w+ m& y- V0 s* R" ]* m
/* assign the tl som board LED-GPIOs*/
3 t5 J* ]# u1 p) u) r" |static const short da850_evm_tl_user_led_pins[] = {6 Y  B2 H, A4 I* x
        /* These pins are definition at <mach/mux.h> file */
9 _0 [; M1 X0 t$ }        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,1 g$ \; H4 Z0 Y" `6 I! K; }3 K  O
        -1  s7 O$ N* H0 H/ u
};
3 a0 x/ Y  d9 i- F; n$ D4 R6 i' ^7 t8 Y
static struct gpio_led da850_evm_tl_leds[] = {& ^1 X+ y8 m6 v% g
        {
$ k, u6 Z5 B: q0 _% J& v. {                .active_low = 0,' Z) F$ G; ~5 F1 l- [  L) Q
                .gpio = DA850_USER_LED0,
: ]7 Y. F$ v4 m% \( ^; B                .name = "user_led0",
) y8 ]; I, M" x  e+ @' t& M                .default_trigger = "default-on",
# P* `7 {' K# T6 d+ a4 r& a        },$ F* u6 ]7 W1 P0 D; C2 \9 D- W
        {2 }9 |- j# r, V6 o9 X% y
                .active_low = 0,
/ R) E5 x9 F8 D, C                .gpio = DA850_USER_LED1,( f, V# E% S+ }9 E0 \  g7 s1 \
                .name = "user_led1",1 K* J* I/ g+ @+ R! R
                .default_trigger = "default-on",
" H0 T3 u, P$ h: F( f        },- j4 V' j- j. D% I. I8 O& g
        {" I+ r* H+ T/ G3 R! m6 h+ y' j
                .active_low = 0,
& H7 k, o5 e  x. m. d- D7 O                .gpio = DA850_USER_LED2,# g3 o: Z' G  j0 X# p7 B
                .name = "user_led2",) C1 _4 Z: l' w3 K
                .default_trigger = "default-on",
+ ?4 x. n* C. w6 q$ s! v        },
8 K! x9 ]# d4 O" A. {        {
5 M- s9 b! R& t3 e( }) @" r( s                .active_low = 0,& s1 Z+ ?& N' c) Z3 N* ?+ F: p$ [8 C
                .gpio = DA850_USER_LED3,
# L5 @" M! r0 w& a" s3 a                .name = "user_led3",
7 I. w  Y; C+ V3 R1 B; q                .default_trigger = "default-on",& _5 X7 u1 F' {: Y2 @8 f0 c
        },8 Y  ^7 c) H' h3 ^
};
: K1 [! \/ v% f7 {
& y5 Q. U5 {, y5 y1 G7 Jstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
, Z, u5 h+ n& o; R        .leds = da850_evm_tl_leds,$ ~9 d5 O! u$ a$ ~2 S; Q2 ~
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),; k+ C- M" E* D5 {) V' V' \
};5 e1 E- v5 y. k3 c, d. s. c- m6 J

$ K' t$ }$ O1 v  T! U$ c; N! Hstatic void led_dev_release(struct device *dev)0 B: {5 _, d$ _: I- r% j+ K5 ^
{
  R5 u7 E. B8 F6 Q9 w  Z};1 f! P" _0 W, Q$ _! j! Q

0 Q2 D4 W1 t. tstatic struct platform_device da850_evm_tl_leds_device = {
2 H1 j: z  R3 Q        .name                = "leds-gpio",
' V- d6 q3 X* ^0 {        .id                = 1,: m3 y, o# Q' }4 e
        .dev = {6 I( U# }6 q3 R9 e5 ~% [
                .platform_data = &da850_evm_tl_leds_pdata,! X) W  b) L& ^2 y' {: o
                .release = led_dev_release,+ z4 e$ p& R* [- t+ C, ?# l1 x
        }( P6 A. J* R! w
};
0 f) M9 u% q* G( _( B  \- l& ~  x% _. v% V% k/ M/ w3 Q
static int __init led_platform_init(void)8 x1 Y/ U; X5 I8 d" p9 U
{
2 z6 b- g$ }% H5 P; Q; n: M5 `2 k        int ret;( K2 s+ y- u% g
#if 0
- _5 R* s+ R9 g6 I+ t        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);' P2 `* }, J' n9 S( j0 a6 B
        if (ret)
3 q" [4 Z  P8 A                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"7 o3 r4 T7 _. {0 D) \  I3 m* E0 N
                                "%d\n", ret);( ]4 w1 D* W6 Y1 a: v
#endif
  z, k& _3 L) j+ x. R% c        ret = platform_device_register(&da850_evm_tl_leds_device);* i5 y9 u/ x! G* L$ {4 X# L
        if (ret)
& m0 V& V" |% f% w                pr_warning("Could not register som GPIO expander LEDS");* K3 E0 d/ c7 p. a( T# X
        else
0 }# u$ V  M# L9 J; X                printk(KERN_INFO "LED register sucessful!\n");  s" v9 ~0 W$ _% f7 A% W5 N5 F
% T5 U7 d2 L2 M+ y0 Q
        return ret;
5 W2 A0 d) w& u6 e. f0 {! S4 W3 u}) K2 `! s' w0 `& ~" o* p+ M( y

$ N; r. |7 J5 f; y- s, X) ystatic void __exit led_platform_exit(void); |* Z! E8 l$ [
{
/ @, Z5 O7 e+ y5 T' ?        platform_device_unregister(&da850_evm_tl_leds_device);
, e2 c. U* o% s8 n8 \% z8 T, W
% I' g7 U; p; ~0 |. M( o5 v        printk(KERN_INFO "LED unregister!\n");1 P1 @; m9 u8 s8 S4 O
}/ h! ^6 r9 f7 n8 R% T9 B& J

* z! ]+ K  s' r4 O3 V3 Z6 j! Lmodule_init(led_platform_init);
8 ]' _9 B: S+ y/ bmodule_exit(led_platform_exit);
; g5 l- A) V7 |4 s3 N; b/ ^) s( O9 s& Y2 i2 {8 x0 Y) q( ~# D
MODULE_DESCRIPTION("Led platform driver");2 x8 H5 W: {- a. m9 g
MODULE_AUTHOR("Tronlong");% b' \& _" t: x3 p- f' p
MODULE_LICENSE("GPL");0 Q' Q( x- O0 H6 Y0 {" ^9 u$ ^9 ]  a
8 A  y4 P% `& v! u5 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-29 04:14 , Processed in 0.042836 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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