嵌入式开发者社区

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

作者: rgf    时间: 2018-1-19 19:02
标题: 程序注解
求大神给下面的程序做注解,请稍详细些,谢谢。- b1 B1 `* }7 s6 K; A9 ]
#include <linux/init.h>
3 D9 k) h1 \" {  @9 }" a5 `#include <linux/module.h>
# ^. [+ c. ^9 d6 {5 k( u$ u#include <linux/kernel.h>
- d% Q. [' b3 B( P8 g#include <linux/types.h>
: ]' {3 W% s# e#include <linux/gpio.h>
( j- s/ ?  O# I#include <linux/leds.h>
# J3 R0 {. L* G2 p; O" k6 k/ `#include <linux/platform_device.h>% h: ?) v! T/ A2 |: n1 V
$ q" F' L; O$ `' g
#include <asm/mach-types.h>
+ K, t# c5 x  Z4 w* n#include <asm/mach/arch.h>
( H- y. p% E- `2 F#include <mach/da8xx.h>" C: z( Q8 o4 o' @/ F
#include <mach/mux.h>
7 E' ?& }* ~' M" S+ k2 P
, i  \. B2 ?' m7 j) c  z#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)# b. s4 D( k' C7 Y1 K
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
, t. i! S& P; D7 O$ E% y9 u#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)) t. M) R) v* [" F3 v( ^6 l
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)& K  p* ~* C- T1 B0 a2 d5 T. ~, N8 Q6 G/ ]

# s  ]% T3 K" u! h& U& }& C6 S/* assign the tl som board LED-GPIOs*/' ~4 N# i* [) r0 Z, |% Z- @
static const short da850_evm_tl_user_led_pins[] = {0 F# ?- @) Z+ p) N* y
        /* These pins are definition at <mach/mux.h> file */
' D- k* U5 y/ ?% ?0 i        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,% P5 q+ |: G& b- R2 D
        -1
# J2 p* B- {4 k) c$ D4 P};% @' A6 r% x) H+ s* J5 }* N% U
  q3 y6 J: }" a& i
static struct gpio_led da850_evm_tl_leds[] = {! u% k' R$ v9 ]9 a+ |6 U- z
        {# w& A# q; E1 b
                .active_low = 0,# E  {  f* |$ b6 g4 {" j4 S/ }
                .gpio = DA850_USER_LED0,
& x  k! ^* ?! l4 B                .name = "user_led0",
; E9 l$ r1 v( E2 L                .default_trigger = "default-on",
' q" f4 b$ g  i* D3 l        },: |0 F9 y6 a' v" ^
        {  X1 |( f" B1 @/ N# ~9 f* L4 _
                .active_low = 0,
4 E" N, n1 n/ T9 S: v8 c: ^                .gpio = DA850_USER_LED1,
& N! K. `- c7 M; y7 a                .name = "user_led1",& A4 ?: {/ B# a/ X
                .default_trigger = "default-on",
' j& @) \+ N  Z6 K6 o) X        },
& z( m' m/ ^' d3 Z        {
% e7 B% u" ~6 N+ Z' U9 M                .active_low = 0,, ~7 }& S; b* ?) H% z! z. ^: [
                .gpio = DA850_USER_LED2,
' }7 _  b  Q' \& ~. d7 G) W                .name = "user_led2",* R& c/ _& h6 o. P, x
                .default_trigger = "default-on",
7 s: G  F7 d5 }% h        },# S3 K' i7 i2 [4 P
        {
: M, N9 E: d: r( \                .active_low = 0,
0 z7 Y; {( v, U% n                .gpio = DA850_USER_LED3,
% o3 L& K$ d  Q. E5 X" ^3 M                .name = "user_led3",
8 N. U& O! h7 s$ [4 i) J/ ~                .default_trigger = "default-on",4 o( U$ p  s) U/ G* T5 P1 A0 H3 B
        },2 I6 P# t$ ^( S+ x# p4 s: {
};
4 l3 h" H4 m* ^# j  V
9 A5 `/ A( o% qstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
0 j' V5 s# I5 A- O4 v: O        .leds = da850_evm_tl_leds,1 l1 Q% z2 H: R) ?( u  X& X3 d2 i% \5 u
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),7 L6 L0 l$ R5 R& x% |. S
};" O/ \: M+ X& I9 z# E# h: `

: @) r6 v/ z+ N+ O8 h4 ustatic void led_dev_release(struct device *dev); _" N0 h1 D" ~  x7 Y8 z
{2 P- O+ ]1 C1 H
};
$ E7 c" O4 X$ L' e+ u" s
5 g6 l# J5 l: f) J: Ustatic struct platform_device da850_evm_tl_leds_device = {
6 g  i  U& ?) v" H0 P  l        .name                = "leds-gpio",: A( p0 N. ?. ], W  m0 P
        .id                = 1,
( M5 }. f6 F) F6 W9 C( x4 w) R        .dev = {
: g& s" z& `- N; }                .platform_data = &da850_evm_tl_leds_pdata,/ h1 |9 r5 T. ^6 n4 o) e
                .release = led_dev_release,
" N2 ]. ~# L1 r        }/ A5 ?9 h) O! R5 o0 p
};- X- g+ K4 _7 N! Q% }! t
& ~) `2 [. b/ ?9 Q1 x
static int __init led_platform_init(void)
# A8 q/ Y# L: z' F# B{$ W6 a- H. Q% }8 D
        int ret;
; r  X; C- \, p# y#if 05 f. [2 N. k. V# R9 g6 v
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
" {0 V5 l. T" x( s        if (ret)" x* ]& O: F7 z2 C( F
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 p6 ~! N1 s  b. ]! ], u
                                "%d\n", ret);
/ A0 ^- [( `3 x2 a- X2 t#endif: K" d. c7 ^4 Z/ m: J3 @2 g
        ret = platform_device_register(&da850_evm_tl_leds_device);
5 c) V3 p& }: L- J9 r        if (ret)
* S; x4 O4 W# X; q/ Q7 d" t                pr_warning("Could not register som GPIO expander LEDS");
- C  }( W/ Q1 j2 Q        else
8 _9 g2 P% C6 J+ u7 ~                printk(KERN_INFO "LED register sucessful!\n");$ H0 C2 b! o( ^* a
% n$ r# v# J" ?/ X
        return ret;
5 H5 j) q2 |$ V: n9 f/ F# }}! _& V$ }! c! |* f5 S6 k9 z! i* V

9 t; Y0 o" N! Y# S1 m6 i$ kstatic void __exit led_platform_exit(void)5 T- A% u- g2 _" t
{+ y& ^/ G/ j. `; j; C9 _$ O% h
        platform_device_unregister(&da850_evm_tl_leds_device);- Z- k/ M; N! ~$ e: n
" V& l4 D7 V. C
        printk(KERN_INFO "LED unregister!\n");3 P7 @; G0 M/ w4 U. x
}4 T8 Y. i. W! M5 P3 G) Y; c
( ^& E) E* m- m1 K3 E+ j
module_init(led_platform_init);+ L2 q- y  {" _) a+ j$ A
module_exit(led_platform_exit);8 a' q& P; y: |+ q7 k
/ K1 a; y& W. Q: ~( @- A
MODULE_DESCRIPTION("Led platform driver");
- p# F2 i% ]$ IMODULE_AUTHOR("Tronlong");# ?) C6 u/ @5 ^' E+ W
MODULE_LICENSE("GPL");
/ g8 Y9 u! L- A* P: C; E
9 O+ ^( ~* r/ T% C6 B8 O. N6 ]: }




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