嵌入式开发者社区

标题: 程序注解 [打印本页]

作者: rgf    时间: 2018-1-19 19:02
标题: 程序注解
求大神给下面的程序做注解,请稍详细些,谢谢。" P  L9 `' e0 J6 D1 x
#include <linux/init.h>+ y: c1 z  E6 y2 A
#include <linux/module.h>; s  v( ?' x  i
#include <linux/kernel.h>
  U* n5 p& H6 X2 i0 \+ {) {+ X#include <linux/types.h>2 K2 d$ q1 W2 M' W2 C2 {% Q* \" Q+ I: b$ H
#include <linux/gpio.h>
: v5 t7 F6 k" [  C$ A#include <linux/leds.h>
2 F& v! \( j" d( F# m' y5 H#include <linux/platform_device.h># [* D8 s( Q7 l. Z+ B/ a

6 P" ~3 t( U2 F2 Q( |& I#include <asm/mach-types.h>. r: G- H( r8 G0 t) G7 A
#include <asm/mach/arch.h>
8 Z; z# m/ ~  R#include <mach/da8xx.h>
: P: Z0 R% C9 O7 q) w#include <mach/mux.h>, @+ T8 W" V: r8 w8 T* o$ h
& E& D1 L6 \0 A) s# }
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)3 J, {/ ?. {& C. H) {
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
) x! K/ V* P! l  o#define DA850_USER_LED2        GPIO_TO_PIN(0, 1), f* r: a: r2 D* ~
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)2 u- q1 z# r+ e6 ]3 h
- v9 o+ o# @4 Y+ {/ X
/* assign the tl som board LED-GPIOs*/
1 n% p; u' ]7 G. Z' H, istatic const short da850_evm_tl_user_led_pins[] = {
& s9 [' m' a) s& ^9 N+ F        /* These pins are definition at <mach/mux.h> file */1 w5 C7 [1 d" x* h$ }& z! O$ w( p
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,5 T0 }6 t( `% l2 z7 N, s- k% L& B8 H5 E
        -1
  Z+ _. S  b1 M2 L};1 a: y. W6 \* b: `

; B$ j$ n7 P7 q9 m6 bstatic struct gpio_led da850_evm_tl_leds[] = {) d5 \' f$ [8 f; t- @7 i# _) N
        {  c& p% B# s8 s. j8 a4 k$ z
                .active_low = 0,3 F" J% C: w/ K( g* i3 Y
                .gpio = DA850_USER_LED0,% \  Z1 e7 v  V1 g% P# p
                .name = "user_led0",
+ S: i8 k* ?1 s2 A# a  ^" S( `                .default_trigger = "default-on",
/ O- C5 }* s' X. }0 z        },
3 Q3 V3 [8 y- o+ Z( S1 j        {
7 s3 L) z( S( C* y4 a$ P                .active_low = 0,6 w' N- K* h/ L& k5 F
                .gpio = DA850_USER_LED1,
; t: U  X" o; N                .name = "user_led1",
, \" T* p& o# @                .default_trigger = "default-on",5 @6 H1 \! t( I2 ^1 m0 m
        },. R7 k7 g# c- ]- V/ v1 L7 l& r$ w! T
        {
- I  w+ z2 G$ K2 ]/ h                .active_low = 0,, h; G. t# X" M9 `: R1 L) p
                .gpio = DA850_USER_LED2,
7 j2 ?9 ~8 M" I+ r6 X/ T+ X                .name = "user_led2",
7 T6 E, w' I6 B$ @                .default_trigger = "default-on",$ ]1 n( ^; u; e: ?% I
        },
, d1 P( @8 z$ g# ?% o! B        {
' O! C( Y6 O2 ]( ?% i4 |                .active_low = 0,3 a- N6 n  t+ q' [! O2 R5 L
                .gpio = DA850_USER_LED3,
0 j+ k5 c" C9 Z6 S# N                .name = "user_led3",2 i9 _! }$ }  P- o9 W
                .default_trigger = "default-on",6 `$ ^) o# {5 g+ G- @9 q/ M
        },5 ]+ H# o! u3 n% F. Y/ h: T
};3 o4 N: S1 }9 A- _$ h

: n( p: D! ^8 q! I  ^& fstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {$ k9 P$ k( {& f6 `
        .leds = da850_evm_tl_leds,) b6 t  T2 }3 }/ \) F' z8 I' G% m
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
# Z- h1 M% r  X1 f- @2 l/ i};
/ Z3 G; m7 I% Q/ T+ D
9 S5 M( ]6 `7 ?& z! ~' w! ostatic void led_dev_release(struct device *dev), e9 D9 F* x5 o7 l. i
{
# T( A" }: Q1 z+ @" u) m( r; E};
  y$ E3 F2 v3 K% h) L3 \3 ?. b3 J
' L3 q. }# ^% [9 y" v- bstatic struct platform_device da850_evm_tl_leds_device = {* I" W0 S3 o6 z% S, {+ z; [
        .name                = "leds-gpio",
- t" X0 k; H7 v! T. k        .id                = 1,
: N/ c) j( T: X4 ]+ S0 z' r0 q        .dev = {6 @/ D0 t2 u1 p
                .platform_data = &da850_evm_tl_leds_pdata,! N0 w1 y3 p- u- {0 A( Z7 Q
                .release = led_dev_release,) H0 c% @: d- Z
        }
1 {8 ~5 b5 R8 [};+ h1 L' Y, n, j* Q& z  J" [1 U2 U
' I2 A6 M7 j6 y( S0 d6 Q
static int __init led_platform_init(void)! |: O! k9 K+ B5 \7 N
{
3 \( `" Y7 M1 t, g0 ~4 s, k* D        int ret;1 j, A6 l( Q( c
#if 0
: O" S' ]5 B0 q% K  k" B        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
9 |. D/ W1 ?. o0 @' D* P1 |        if (ret)2 q) j( ^* G- L" u7 W  t/ G8 \. D6 @
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"+ C6 n+ L0 K& P# Y  H) X4 n4 t5 `
                                "%d\n", ret);- M+ m+ |) @; V
#endif- Q( W0 S7 j1 Z6 O% x
        ret = platform_device_register(&da850_evm_tl_leds_device);' Z" A( M2 Z3 I( [+ s' U
        if (ret)! f7 Q2 J+ x# G* k% O1 K8 @
                pr_warning("Could not register som GPIO expander LEDS");; p+ F' M6 _3 ]1 N; d# D  O
        else
/ h7 h( {# {0 x5 c0 M                printk(KERN_INFO "LED register sucessful!\n");
/ u  x" p+ o& l; @0 C
: N; I( w- P! J+ `  q/ R        return ret;
& s! b# M5 `9 N# x/ B}
$ [2 i  R/ Y3 ]* b$ Y; K2 e
, x& `; a" m* E* \, _static void __exit led_platform_exit(void)
0 u* q9 ]2 }5 K! \' u- m: r{- q! u2 y, A8 X
        platform_device_unregister(&da850_evm_tl_leds_device);
6 N- m; A+ C+ S' ^3 Z# `4 Z( `+ L! ]" e
        printk(KERN_INFO "LED unregister!\n");' G1 A' t( V$ O  v
}- T- Z: h$ w. o* ~0 k

9 z) _) _7 c( ^2 L& T3 cmodule_init(led_platform_init);  w& S4 {1 u6 S
module_exit(led_platform_exit);
- e6 g* \+ x8 k" s3 @5 s. f8 d+ x$ S# r. M
MODULE_DESCRIPTION("Led platform driver");
* E) i6 D0 o( ?3 BMODULE_AUTHOR("Tronlong");) ~+ ~) g5 J. H9 N/ \  j
MODULE_LICENSE("GPL");% _# d+ w3 L; v2 ^1 {6 R
6 c2 d! C5 n. s3 v6 Z# D- R





欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4