嵌入式开发者社区

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

作者: rgf    时间: 2018-1-19 19:02
标题: 程序注解
求大神给下面的程序做注解,请稍详细些,谢谢。7 i9 g7 o! p1 I$ y+ u( g
#include <linux/init.h># {! Q  U: \' f8 }7 u
#include <linux/module.h>9 o" M( g% w. }" J  u' p0 R# M
#include <linux/kernel.h>
: u( P' k4 t7 ~0 P, N1 N* t# u#include <linux/types.h>
& Z" E$ q5 |! H: e#include <linux/gpio.h>
1 r6 V) P! v( ~  H  d#include <linux/leds.h>* x; h% j' o; j- _7 R% G. C
#include <linux/platform_device.h>
: ]! k( \; |" x* p" {' _
  |9 j, l) G  V4 t2 A3 G  h* G#include <asm/mach-types.h>, Y1 b' [' [3 B6 {
#include <asm/mach/arch.h>
# N$ C) P) O/ L) c8 T: |#include <mach/da8xx.h>
2 Y- h$ i8 u) T9 b0 \' W% d5 k#include <mach/mux.h>" _, m5 e9 O) P. ~# e

& B" y) t7 [$ N  }$ o* H#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
: _+ r# J% H9 Q#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)4 ~( q$ j+ W0 O% j- K- w" \
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)+ [; s0 g$ n* v- e$ x$ c. [& U
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
& d8 O' y; r3 [: W; H3 {( |$ L& ~' H) J
/* assign the tl som board LED-GPIOs*/
0 ^4 `2 S8 F, F- C  Y. r$ fstatic const short da850_evm_tl_user_led_pins[] = {
* T/ N1 o1 K0 i3 _7 d        /* These pins are definition at <mach/mux.h> file */  b: F$ C1 ~; n" L+ Z+ i
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,, t/ Z& p4 A6 w2 j1 e
        -1
3 |7 V( d- a( _: a};1 V; u9 ]/ t3 ?

- l( q+ p- x; B6 Y5 pstatic struct gpio_led da850_evm_tl_leds[] = {
+ k& t# c# c6 s* l# M# E        {7 L, r2 L" V6 j2 i5 x
                .active_low = 0,
7 U' z; l. e1 H& n& \3 I                .gpio = DA850_USER_LED0,
2 X5 U4 n1 ^0 J& Q! ~' X. \0 _                .name = "user_led0",
4 Q3 A6 G$ b. C! K) f                .default_trigger = "default-on",
& H4 |0 `7 k) b        },
, U2 E! w* a) W" S        {9 H" Y: A! i3 P$ a
                .active_low = 0,
1 K5 B9 ]5 y6 X1 U: d# q9 [                .gpio = DA850_USER_LED1,
) x: W" M) j: U! |* o9 G                .name = "user_led1",1 z$ D! E. t! W) N% L6 h7 t0 Q9 u
                .default_trigger = "default-on",
; \2 ~7 A& U+ H+ y        }," u" I& a2 N; d, Z
        {
) y& W8 C+ }8 X' \# X) t' G$ H5 y                .active_low = 0,
% J% D8 G! o6 L6 F$ W                .gpio = DA850_USER_LED2,2 w/ H/ y; K# A% ^6 L5 a
                .name = "user_led2",
, h6 _( \# @, X- A/ Y/ r5 ?                .default_trigger = "default-on",+ n, J; I0 z- k. y5 ~2 X6 [! q
        },. v- m' M) V: A. E0 g
        {, F+ V9 f! t7 @, B2 y- D
                .active_low = 0,) }2 E( Z1 f  H- r, Z1 w
                .gpio = DA850_USER_LED3,
/ U/ j+ {3 C! d% u' D- F7 Y5 Q& G                .name = "user_led3",
+ k% \/ O( P* t4 O( {& J; v+ o                .default_trigger = "default-on",  B1 J/ c6 r9 X4 D7 h
        },
/ F! L8 u( b( F2 q+ o};* j" X0 `8 i8 T0 {- J1 A, B4 `
" `. T0 C# [* F! s
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {& |2 h. v% A/ I: e5 s: ~
        .leds = da850_evm_tl_leds,
) _* n/ Y8 {: u" R$ q        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),+ X, Y. C  `; ~
};: M: k% @, D! B: q& \2 k6 C* e

6 A- _7 m7 o5 ^static void led_dev_release(struct device *dev)1 J# b0 K& R6 [( v
{
( M8 C2 L3 `5 z$ I1 _" `* b};0 S' C4 |6 \- j6 n. _
+ o% z4 d! W; @8 u7 R5 `& {
static struct platform_device da850_evm_tl_leds_device = {% y; M: Z& x, L3 {4 f  s/ \* T
        .name                = "leds-gpio",
- r$ `# ]0 }0 p6 |+ S, b        .id                = 1,9 u. @/ U3 o2 F% u3 }, @$ M5 C
        .dev = {
0 _! O! o8 ~0 l7 D  J                .platform_data = &da850_evm_tl_leds_pdata,
: o7 |4 V% {2 A! Y3 b                .release = led_dev_release,
9 o! c0 J. m1 v' a( n/ v, S        }& z% C4 G5 [( S
};" a* l5 E3 M# p* p6 t

0 M: {- J( B  Dstatic int __init led_platform_init(void)1 W; ?7 u1 f0 x0 q( L
{4 m) M* a% D7 j4 v' `
        int ret;1 q0 c+ y' L* d5 r  c  X
#if 0
3 e# b( X) B$ E1 T* G        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);- r* A6 A+ d/ G+ v& k9 m; D& p* s
        if (ret)# q% t4 Y. Y1 K2 H7 G5 U+ `% f& s
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 j* ^! _/ j1 u1 d9 o9 {8 T# r
                                "%d\n", ret);# ~9 }. L4 |3 j: K! V) `
#endif
! p" w, D- _, Y        ret = platform_device_register(&da850_evm_tl_leds_device);! a5 y! s& l" [+ w1 a7 n& z5 I
        if (ret)
5 d' d2 v2 f$ o                pr_warning("Could not register som GPIO expander LEDS");( Z1 z% Z0 j$ c
        else
1 Z) \$ ~+ v1 m/ _( f* [                printk(KERN_INFO "LED register sucessful!\n");
3 W  H6 U& J, e5 S# j! K/ K& G8 n
        return ret;; T' S" @& o) @" @5 S+ ]3 y
}( T7 G% Z  B3 Y

0 ~3 A+ g) L$ h& Jstatic void __exit led_platform_exit(void)
" |9 C5 t7 [$ l{  h" E* z! |' i3 H& q7 [
        platform_device_unregister(&da850_evm_tl_leds_device);
! `0 `1 G  g, E7 j$ z8 E( r. W' [& a! b4 W
        printk(KERN_INFO "LED unregister!\n");6 A3 Q+ C- q  c: z+ Z1 \4 Z! ?1 T
}4 W8 f" P- d+ G: p; F' X1 h
5 {/ ]6 p! T4 i6 q
module_init(led_platform_init);
* O6 ?( Q; ^* ]) [module_exit(led_platform_exit);, e3 n' f; ?* k( J* R; A
. ]% b: \8 A; E% h3 T) }; ?
MODULE_DESCRIPTION("Led platform driver");, a5 n+ a( Y0 t
MODULE_AUTHOR("Tronlong");  ]/ _: s- z4 H- q6 @# g: d" l' T
MODULE_LICENSE("GPL");! o3 k+ ~5 o! |3 L, s8 u- k& U& k- Y
+ ^8 i* M" r6 Y0 c0 R





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