程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ A+ w( G; p2 d3 r( s
#include <linux/init.h>
4 M8 X  b+ |5 ?! A! y#include <linux/module.h>  ]9 u+ k; d, p' @6 P
#include <linux/kernel.h>+ ]+ F: X* {+ R  x2 B
#include <linux/types.h>
* e) X& f: W; a" ~#include <linux/gpio.h>
6 k5 |6 L& G0 D' C# O, p, n( ?#include <linux/leds.h>$ R1 D& @8 t5 U0 c% d
#include <linux/platform_device.h>. @! b: Y0 t4 p+ m; }  n7 M
: Y# _5 ?/ m% I) u# D
#include <asm/mach-types.h>6 [, V# E6 K; z% J5 W
#include <asm/mach/arch.h>9 A! F7 v2 g1 d* a
#include <mach/da8xx.h>0 b+ y+ |* m7 M, l. o; I) K2 p$ o) B
#include <mach/mux.h>
- q, F' Z8 K5 k8 I) ?8 F
% V3 l/ o0 ?' ?! h#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
( ?1 _2 v# q( x#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
$ F( ]3 V, J- \% k0 P) t- t#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)  d' I( m* m5 L5 P* m3 E$ x: a
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
) n: x- o; F( T- ]9 w9 s/ _/ I: t* }: b1 j' ?
/* assign the tl som board LED-GPIOs*/, P' C! Q3 T4 ]5 ~4 m
static const short da850_evm_tl_user_led_pins[] = {0 c4 ]9 f, v; L# G* X) [* N
        /* These pins are definition at <mach/mux.h> file */
; c# E! ?$ h8 ~! U: X# {6 G+ i5 U( S        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,, Z5 ], M" V- [  z9 \, \, c8 T
        -1! S4 X1 x. D; n8 ]; k/ ^" a, m3 |
};
5 u9 |5 J" n: p8 Z1 d& M  Y
: l2 y$ ^+ ~; y; C! N5 A7 p3 r, fstatic struct gpio_led da850_evm_tl_leds[] = {& N3 s+ H! f! D3 j% a# o
        {  s* ]) s8 b0 ~
                .active_low = 0,
2 G, e% X2 R3 d+ ^4 c. b2 T                .gpio = DA850_USER_LED0,
3 W" [* q: s; V9 G1 k2 ]                .name = "user_led0",
, v7 P$ W) f. E( P, k                .default_trigger = "default-on",
+ [; k% v7 Z7 C. B) A        },0 a9 i5 j; S2 K* v, [' L
        {# n1 K+ M, l# ?$ D2 o; }9 E4 K8 Z. R+ x
                .active_low = 0,
4 Y, v4 c# F' G5 J* V                .gpio = DA850_USER_LED1,( X8 O  H: K0 h7 q' H# H
                .name = "user_led1",
! c8 A- H$ S& x5 Z; o# q4 \                .default_trigger = "default-on",
' |" i& N) H! \& m5 T7 a        },  d* l5 U3 e" n" l3 n& \' D  N9 N8 [
        {
# b, c8 }& ]) Z9 Y* t' F" h                .active_low = 0,
; x; p! F& L* g  E: l                .gpio = DA850_USER_LED2,
( }- S2 e$ r8 p( l# H4 [                .name = "user_led2",/ L; E/ j- C% T$ F! T
                .default_trigger = "default-on"," @+ H# n. s+ S6 w: h
        },
) J: [, K( p9 V) z        {) n  y; b0 ?1 v* b
                .active_low = 0,) k3 i% \$ O! X; ?( L# B
                .gpio = DA850_USER_LED3,! z5 ~) J3 ]% k
                .name = "user_led3",/ d* R  }8 \" o2 o
                .default_trigger = "default-on",4 c; N2 _/ R* c) o% e
        }," P8 n$ P3 i% ~, G6 p
};# I6 q7 H$ y  M3 v$ Z
; Y6 m6 P( f* T( c2 V5 k& Q5 U2 a8 c
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {/ \1 ^4 Y# b, T$ ?4 W2 E3 `+ S
        .leds = da850_evm_tl_leds,
1 r4 T$ G, e  H* x/ C/ ?- }$ f* z        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# u1 {( d) p5 X& G  Q  E
};' i& V+ S: R: h3 c
1 x. X7 Y: ^% |- E# L, N0 L; b
static void led_dev_release(struct device *dev)
+ \2 w6 b/ v+ N: h) `{3 B) L) X2 a. V1 j
};
. ]% P& u7 i7 M- o) X; W! O1 \7 x' m: o6 H7 `. l
static struct platform_device da850_evm_tl_leds_device = {7 Y5 _: n( x% |' j9 L5 W
        .name                = "leds-gpio",
2 h! [$ u- V8 V  d  W# D        .id                = 1,+ x5 W5 M- F5 o' v$ M7 Y* I
        .dev = {0 }9 z6 G) S, [4 @3 O% u* \
                .platform_data = &da850_evm_tl_leds_pdata,
7 F5 n" K# Y+ ^0 b' g2 T5 C! {                .release = led_dev_release,' J( M* b1 i# S, _
        }; U2 `# ?5 [% ?
};
# K! Y* Z; R$ W/ G7 {- g3 V
/ m# w: Q8 \- L& m0 vstatic int __init led_platform_init(void); B, h$ ?: O0 h0 M
{4 q0 y. [6 Z7 `1 C1 G2 B0 a* x
        int ret;
2 P& D/ u. n. F" W0 b#if 0% z! B) W- ?8 C  n5 L( H
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);! N3 V+ }! }9 r: D$ Y
        if (ret)3 Z  z+ f" x5 @
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
, u1 ?2 K3 ]0 K) H1 U8 ]2 @                                "%d\n", ret);! ~7 |3 W& k- q+ l" s5 j
#endif2 R( _6 }% J& D& S5 p
        ret = platform_device_register(&da850_evm_tl_leds_device);
5 s7 {- U0 O" W. W5 K4 j$ _' z9 j% N        if (ret)) Y4 i" P4 _0 g3 f
                pr_warning("Could not register som GPIO expander LEDS");
0 ~* g4 O0 q; @( U. o  p) A- m        else
. G4 w2 Q8 l+ {2 G' Q# j: U                printk(KERN_INFO "LED register sucessful!\n");7 r1 o# u9 k4 `9 `" j

5 Z% e' l. U) t$ H' H) [1 c        return ret;
) G" c- u. W5 k' Y( ^* \% c9 k% j) t}
" m% S% \# P3 `1 [
0 }+ T3 o! d$ |/ j: H2 b7 |static void __exit led_platform_exit(void)5 t( p0 v1 U2 z9 W! Q) W: g6 U! _
{
' S8 ^3 N5 U3 p        platform_device_unregister(&da850_evm_tl_leds_device);6 o1 X& Y) p6 u  M" G

1 p; q/ L* b/ z1 m# f, ]4 Q        printk(KERN_INFO "LED unregister!\n");. I$ f: Y+ o; z2 s" a
}
6 ^. D& \" B) c5 f6 M5 s, Y( n) B9 Q) d2 F1 C8 i4 V( {5 W9 C/ b8 r) S. O
module_init(led_platform_init);
0 H) M) m$ `; s4 Q0 i& H/ Vmodule_exit(led_platform_exit);' ]! Y; A, p& G# t+ Z7 A. |

3 e  e3 }/ \2 |/ I( z. nMODULE_DESCRIPTION("Led platform driver");/ ]! I5 a% A# _( H: G& s
MODULE_AUTHOR("Tronlong");
0 A# Y% @2 u, kMODULE_LICENSE("GPL");
+ ^* P8 e' s. L4 q; l( S4 _3 k$ y+ L+ u7 @4 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-2-27 21:02 , Processed in 0.037097 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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