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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
) ~; `9 w% S+ ?2 k; M5 S9 s* h#include <linux/init.h>
3 U, k9 e% C% b* C#include <linux/module.h>
6 ?( \& {2 a$ {: \% o#include <linux/kernel.h>
3 K; j/ k$ o8 P' o4 r7 O( Z" V/ n#include <linux/types.h>
. o* z* F: n+ q1 K* ^& s#include <linux/gpio.h>6 u+ g9 f% T/ U) ^8 R5 m
#include <linux/leds.h>: Y  F' A4 A! J% y* L- Z
#include <linux/platform_device.h>
3 S# E+ z6 e. `$ |" V, Q; H: z3 K' @
#include <asm/mach-types.h>8 x4 k% U& `6 o4 _& j0 m( \8 _( J0 f
#include <asm/mach/arch.h>
6 X: t& |/ z7 x0 V) A* n1 d#include <mach/da8xx.h>
: a4 s4 f7 Q* q9 d- H- a#include <mach/mux.h>
# b  \# K7 l, |& |6 E4 T( L: `. J$ ]
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
* P; y0 W- J6 R+ [4 P- f3 i8 H#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
0 {0 ?# H/ w/ ]" C#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)1 o- {/ r6 Z' B8 E$ r- A( g
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)9 v' x2 U0 d* W3 q7 q
! y" f+ F# |  |  |+ [# V
/* assign the tl som board LED-GPIOs*/$ Q8 n7 r/ K: W
static const short da850_evm_tl_user_led_pins[] = {7 ^$ F9 h9 \: P& K9 |) L
        /* These pins are definition at <mach/mux.h> file */2 R' H  v; [+ H0 y- p
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5," G6 q  x/ m+ W
        -1
: ^- \+ [  _  |};
2 r# Q; ~1 P- y& O1 ]3 x
& W) }$ X% _* C, Dstatic struct gpio_led da850_evm_tl_leds[] = {
: C% s/ q7 I$ A4 Q+ Q        {5 f3 ^; X/ R. M7 U
                .active_low = 0,0 }( d8 @, k& C
                .gpio = DA850_USER_LED0,; s8 X; e& f4 B2 I% f5 z& M
                .name = "user_led0",! h: i+ f5 X. ]  U/ w- q2 I+ K
                .default_trigger = "default-on",
! O. P: q  o- t4 t# J        },/ l  U0 u" C; g2 X+ a2 j
        {
6 W+ o4 G3 X1 |: C2 u& n( |                .active_low = 0,- l8 A3 g! X8 z8 \, W" n( g
                .gpio = DA850_USER_LED1,
( e) C; p  ]! v/ x) S/ S1 J                .name = "user_led1"," a) G9 p) R% t9 d6 o2 {" u
                .default_trigger = "default-on",
, ?5 m2 t5 n# W! R& D        },5 f! W3 Y7 J1 S! \1 W
        {$ h) |& n; t! a( o
                .active_low = 0,, R. a4 d. b: i/ b2 `7 p5 ]& S% P
                .gpio = DA850_USER_LED2,, o8 H- c& d% E; m# q
                .name = "user_led2",
3 [  w8 j9 I* R1 i4 E. Z; g8 q                .default_trigger = "default-on",; F8 p7 U& s/ r) ^2 [# D3 R+ o& J
        },7 ^9 l* R5 }0 Q+ f" u! R9 N$ ?2 N
        {
$ j, c4 w& b0 V  a" B                .active_low = 0,) E' H# W! K* b) ]: |! K
                .gpio = DA850_USER_LED3,  e' d3 s! i2 o
                .name = "user_led3",' u1 \$ \. x0 z3 p6 D
                .default_trigger = "default-on",
/ T% ]! t4 f3 h4 q. ^& k        },0 X, q  m) o" a; N
};
: r3 c+ J% f/ Z$ s% @9 Y* ], \; C  }1 z- ~8 e  e; K
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {9 y. z. A- m' M9 i, c" T0 h
        .leds = da850_evm_tl_leds,4 F# c' L' x; b
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
8 h3 k" Q0 d* D: {( N3 l};+ O8 \( c: i  E2 O; m0 q

! i4 O$ d* w3 [0 Nstatic void led_dev_release(struct device *dev)" f  J/ z6 @* w1 I
{2 B, a0 f$ k' m9 p% i
};
; W0 N0 c3 t% B* G4 S
+ a0 r$ j( V. [, ^static struct platform_device da850_evm_tl_leds_device = {
" f' {+ }" o9 m        .name                = "leds-gpio",, K( {: ?; a% \2 \0 Q2 _' ?
        .id                = 1,& L0 m. [. s; @6 l. @2 G
        .dev = {
: L9 Y2 T+ r% {# }7 l9 V% `3 {# y                .platform_data = &da850_evm_tl_leds_pdata,7 p, O4 ]1 j9 w1 X4 o
                .release = led_dev_release,
# O/ a  C: T$ h/ w' s        }, A% U0 e; q6 O7 p5 Q! n
};
/ v4 ^2 D) A2 Y' P0 W% \- V# G4 I
static int __init led_platform_init(void)- @3 @8 a, k6 l  A
{
- A) n4 F* |& t3 P+ A0 T# I        int ret;
6 {' r" }2 X/ [1 s  r#if 0- V& p% J0 y% H. `- r
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);2 E0 x5 C; Q8 `% I9 c: v4 q
        if (ret)
. o3 l8 r. ^. N' z5 G9 R5 s8 B                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"' M8 ^7 _& X) N3 |/ s+ @( C8 ^5 H
                                "%d\n", ret);" c) ]5 j2 a6 |! y1 h% b7 [
#endif
6 S# x$ ^0 ^  ?/ p        ret = platform_device_register(&da850_evm_tl_leds_device);
3 v8 c' O) t/ F$ H0 R7 i        if (ret)
1 j2 h6 l% z! `" R4 G5 T                pr_warning("Could not register som GPIO expander LEDS");
, \$ T6 `& [6 K9 k$ }+ a        else6 P2 p) |: v( b& i: i
                printk(KERN_INFO "LED register sucessful!\n");
. p. q! s9 K& U1 ?0 t. @$ y4 }; N+ u6 k7 }
        return ret;1 g* Z+ }9 r, ?: L3 h
}
9 |$ F3 Q: H5 r0 a3 m0 r* x- }; l: s% N- E/ a- w! h$ ]) j+ }% p
static void __exit led_platform_exit(void)
5 |+ X- }4 w9 M. o{% [, X- `; Z" a; U; G
        platform_device_unregister(&da850_evm_tl_leds_device);2 n0 u  A; G5 B4 T, Z8 y
9 c% _9 y) k4 t
        printk(KERN_INFO "LED unregister!\n");, a% T  P, S! d1 U
}/ W  |/ l' U8 D8 `
$ n* f0 s$ U, T; w' f8 @
module_init(led_platform_init);/ {; n* u; ^8 o7 `. Z# M
module_exit(led_platform_exit);
  d0 f; L+ X, y0 c+ c) D% H5 v1 x4 j
* W+ N7 Y) D" T* G4 FMODULE_DESCRIPTION("Led platform driver");
2 i# y$ N) P9 |, OMODULE_AUTHOR("Tronlong");" }; E3 k% w. h* |/ @' K* _
MODULE_LICENSE("GPL");
7 I# X( J: V# x$ P8 x- u3 c7 [4 ~' V0 K8 p7 l& a+ g' _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 12:36 , Processed in 0.036500 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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