嵌入式开发者社区
标题:
程序注解
[打印本页]
作者:
rgf
时间:
2018-1-19 19:02
标题:
程序注解
求大神给下面的程序做注解,请稍详细些,谢谢。
6 |0 w. S. W/ N
#include <linux/init.h>
4 B! ~% L( z. A
#include <linux/module.h>
; S7 `; I- U; Q$ c0 ?8 d
#include <linux/kernel.h>
( A' H" U: I, t
#include <linux/types.h>
, K3 g7 U- _5 M* B2 R* m: ?
#include <linux/gpio.h>
, e- m( a" a( W% S h/ w; C
#include <linux/leds.h>
- ~8 k% r u, q% U- z% Z
#include <linux/platform_device.h>
" v1 r& d% |& P" ]
: b) S5 d4 {9 n1 [6 t& S) P N
#include <asm/mach-types.h>
% h2 `1 _7 ?% M; z3 |3 G+ D
#include <asm/mach/arch.h>
) L1 ~* K, J$ V# G0 p
#include <mach/da8xx.h>
- }0 J$ n; m# j
#include <mach/mux.h>
" [5 a0 B; N ^; T8 z
4 L; [# c% V! g m' m# [
#define DA850_USER_LED0 GPIO_TO_PIN(0, 0)
/ o/ C; N" @) O+ ` x
#define DA850_USER_LED1 GPIO_TO_PIN(0, 5)
* p/ _9 `& ~' A. K) [: ~
#define DA850_USER_LED2 GPIO_TO_PIN(0, 1)
% u; U; y1 `- R1 A
#define DA850_USER_LED3 GPIO_TO_PIN(0, 2)
; H$ Q: F+ P2 V3 z6 f8 h6 u7 s
9 |7 T9 o8 }) Q6 I3 i
/* assign the tl som board LED-GPIOs*/
0 r) ^2 v3 U1 J
static const short da850_evm_tl_user_led_pins[] = {
- F; C. G& ?8 h& O
/* These pins are definition at <mach/mux.h> file */
7 D& ]! w, V* R& P: b( U! m
DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
( k* r6 k5 q; c3 [* z+ }
-1
# B" M2 [0 k" V" O! n1 G6 G F
};
: N+ e5 G' ^3 k5 i# z
7 b# k- g: v' d% B8 ^
static struct gpio_led da850_evm_tl_leds[] = {
, G+ l6 @/ y. H! _0 J9 [ ^
{
# U& y) L8 X6 x+ A+ l0 l/ ]
.active_low = 0,
8 n5 L4 C) s, b& f* p" B9 r. X
.gpio = DA850_USER_LED0,
! M/ P8 b& V# E6 v H. P( A) `
.name = "user_led0",
# b8 Q2 n1 g" n# n, G3 K- V% w
.default_trigger = "default-on",
. J' Z" O6 ~& v" ]/ h& }* l& X( V
},
) l: H; i0 T* \5 E1 h, Z5 Z$ Y- w& J
{
7 U& t- W" P5 b: t- ?# k3 @, v
.active_low = 0,
4 L. B4 @8 J& G' G
.gpio = DA850_USER_LED1,
) }( {0 d% n$ K" v6 Z
.name = "user_led1",
$ ]' P, d8 ^3 d: W A
.default_trigger = "default-on",
( V: y* x; W% {- x# f7 r
},
4 R& i- B! l' M1 W* P% E$ J" A+ N% v
{
4 L0 [- C7 d: \; u/ B& K* l( ~0 L
.active_low = 0,
; I0 n% q7 G4 s$ `
.gpio = DA850_USER_LED2,
/ v* ?; Z; p! b+ K3 _
.name = "user_led2",
# |& x$ F! m+ O/ h- c
.default_trigger = "default-on",
3 A0 u+ [( Z7 Y3 r& N3 O2 d* P9 m8 K
},
7 n3 n! J( r7 R; [$ g$ }
{
% ~/ b4 N# ]$ ^$ Z" M! H
.active_low = 0,
# O$ C. w3 C5 S* V* J+ ]* U# [
.gpio = DA850_USER_LED3,
5 @$ ]* A6 _! Y3 u6 e5 d" A7 Y
.name = "user_led3",
+ ^7 _" b/ ?% w: I8 Z* S2 s
.default_trigger = "default-on",
8 H& c1 q: J+ a1 c( T V
},
5 M6 Z5 Q4 S2 a- p8 y9 k; z8 |* z
};
* s3 w6 o; l+ O" z7 G
7 d3 Z' Q( G( S- l4 W
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
) \0 M! l' p7 _5 I9 v' T( d* ~
.leds = da850_evm_tl_leds,
- P0 X7 v4 }) X, Y' O2 t
.num_leds = ARRAY_SIZE(da850_evm_tl_leds),
* X" B* _/ M5 G9 R
};
# x$ e% ^6 V1 N3 l9 v A
" d# O1 N) c6 Q* X3 _
static void led_dev_release(struct device *dev)
5 y, ~4 \! x; c: ^; Z
{
( K5 m/ D6 u* {) Y" c8 Q
};
! v+ H' V, J" i. |) X
5 W( \: H6 ^8 G5 J' ]% s9 r+ x* _
static struct platform_device da850_evm_tl_leds_device = {
) |" E: U) m# Y0 T1 m, G7 U/ a7 r
.name = "leds-gpio",
( Y& D! H- c# P0 V( g+ n& R7 t3 i
.id = 1,
" b0 v' a* U& J9 x$ D2 J
.dev = {
3 D( i1 w1 R$ U. p9 [6 `
.platform_data = &da850_evm_tl_leds_pdata,
: a' y/ q; x) A( K
.release = led_dev_release,
: I2 N: Z# v! N* n0 y
}
5 i8 V' V3 v; W1 D/ `
};
5 }$ [: J9 J/ K+ F
" [3 t& Z# C9 k) E: [+ i
static int __init led_platform_init(void)
, j V$ p# O% ]0 K4 J5 g) s
{
. ?+ r8 |. b9 h# u/ {7 A
int ret;
3 r5 P8 M( \) x# i9 x
#if 0
) H* B! a& H4 f2 u
ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
7 X! ^( T t- |/ ~7 `+ [( j2 f
if (ret)
( z" j4 h' l! y; @# s2 k
pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
" B8 @- n) B3 ^" C, i& P7 ]9 u
"%d\n", ret);
0 [ z8 n) k0 t# Y( a8 Q
#endif
: ^1 b, `' f+ r( I8 r1 M1 k' g
ret = platform_device_register(&da850_evm_tl_leds_device);
7 {! |( i: w7 f3 ?: W& s. I
if (ret)
* N1 _6 d0 y7 M
pr_warning("Could not register som GPIO expander LEDS");
" F& O( ] i, F) r& ^, r. v4 l2 a
else
% Y' ?1 e7 f: Z2 o4 u
printk(KERN_INFO "LED register sucessful!\n");
+ r" I2 c+ b! ~6 p
' c# D, e$ U# U' @; e
return ret;
6 Y' L& @2 K( C* f" s. k O$ ?
}
& t+ v/ A r: c5 i$ p, L4 w; j0 ?4 c
9 T1 ]& {9 h K% a- m7 N" |: y% _+ `
static void __exit led_platform_exit(void)
$ R; ]1 q- x( r, b
{
2 B! H+ c3 m& X! z b$ }
platform_device_unregister(&da850_evm_tl_leds_device);
* Z- j0 k5 G6 P$ f/ T$ C
* `7 Q6 ~7 V+ u8 E) v _& [* s
printk(KERN_INFO "LED unregister!\n");
4 s Y# @8 a% Q2 e! v* E/ s1 v
}
, w8 \" T/ j2 C/ ?6 z
# L [3 ?# A( W+ w% C/ e
module_init(led_platform_init);
0 C0 \- q; ^, a( _9 i" h
module_exit(led_platform_exit);
# A' h4 J) `/ K1 X# ]4 t& ^: X
- u8 M2 [' |% c F- I* P8 u
MODULE_DESCRIPTION("Led platform driver");
( ~6 f# Q. H2 B6 A4 y$ P- {7 b
MODULE_AUTHOR("Tronlong");
8 P5 E5 b- j, I6 r0 c
MODULE_LICENSE("GPL");
) X3 B c/ x9 ^/ P4 [5 C, p0 c( ~
0 E! q' ^/ Q& Z! D* c) j
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4