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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。+ D5 L+ M5 T" {$ d2 m9 r
#include <linux/init.h>7 G* ~, f7 a( R, k
#include <linux/module.h>
; K% n" A) h  Z# _#include <linux/kernel.h>! F" y! _% G! c- k: q2 F
#include <linux/types.h>0 L- G& }7 i+ u. ?# l) h
#include <linux/gpio.h>4 m+ Z( B1 @3 S
#include <linux/leds.h>
$ _9 R: y# _. j; W#include <linux/platform_device.h>
- Z9 W  W% g: A1 v* p
- A' a$ P# g# ~3 B5 L  G4 g#include <asm/mach-types.h>
9 m# p, t: A. R; N7 k#include <asm/mach/arch.h>
! a3 n0 E. a5 X' A( w9 K9 t#include <mach/da8xx.h>1 D0 s/ {/ M" L1 z* }# l" |+ j% Q/ k
#include <mach/mux.h>
) _6 P5 Q( x7 T3 X: V8 Z. x
- v  E! g! ~6 H4 Z( T0 M6 u#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)0 l5 _: o0 i7 x! S
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)0 W5 a: @9 T& r* {7 D+ R
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* L* @: K% w' d1 y6 T! Y2 ]#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)% }5 t0 A/ M$ v6 [) @9 n

# r6 f# u3 m# a$ I' ^/* assign the tl som board LED-GPIOs*/: u$ I9 O6 F4 t4 `9 t8 ~8 W- H
static const short da850_evm_tl_user_led_pins[] = {/ \8 _  v8 c( g2 x
        /* These pins are definition at <mach/mux.h> file */
# F" m5 ^9 H4 {+ J# y/ N        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,3 t$ {5 g0 x) B# w# n# X
        -1
  g# ^9 ~' x5 L" \. F};
  d  m$ I: j: t' Q) {5 Q& c
1 u7 W, q/ n: P% dstatic struct gpio_led da850_evm_tl_leds[] = {  v9 U3 R  ^2 \
        {5 G, T/ I  I7 X% i- k9 M/ C4 {9 ^
                .active_low = 0,9 W2 p" d. |2 V+ Q  A$ J
                .gpio = DA850_USER_LED0,2 Q6 y- H! y' }" E
                .name = "user_led0",
, t' |  f. O* K+ K! G$ V' ]                .default_trigger = "default-on",
& H5 p7 B( v8 q! D0 u+ J        },
5 O, ]1 f+ G; s        {, ?/ i1 \! e/ j5 G- A2 v1 p
                .active_low = 0,
2 _% k  ?  z' A$ m) z                .gpio = DA850_USER_LED1,
8 O4 c# s6 }+ {7 e                .name = "user_led1",: u3 _4 p' S( Z+ L8 |3 t. g+ Q
                .default_trigger = "default-on",
& R, y" R3 C+ t7 q0 Z        },
5 X0 k3 x( x6 n/ U. G, ~* W( }        {
* |4 g% `- D( N" E% x                .active_low = 0,
8 D/ |$ M5 j5 w' e9 a                .gpio = DA850_USER_LED2,
% k' F5 @8 n- u( Z4 q                .name = "user_led2",
" z' X+ S; s1 R  ]( N                .default_trigger = "default-on",
: ^) @; C4 l4 \4 ~; E* v        },
# P5 G4 ]  S4 R! j9 V6 V8 ]        {( d+ z" A& U( i8 m
                .active_low = 0,7 j1 ^7 T; Z/ M
                .gpio = DA850_USER_LED3,3 N* J) }3 W) q
                .name = "user_led3",; Q4 x/ w8 l8 s( L- V" C
                .default_trigger = "default-on",& B2 t4 u4 g5 ]% n' a( e4 V
        },
. D7 k- [1 y0 u" C; C, U, I};: w5 r$ c0 z) R0 ]& ]- N/ r

& F# X, d& {# u: lstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {' B( G' a8 p& B, |: `# t
        .leds = da850_evm_tl_leds,  C% b8 `1 x3 F/ O$ G  L
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
! ?/ B: }, f" u# \};& ^4 @, h/ M; P
/ i! b9 H7 y+ W7 G
static void led_dev_release(struct device *dev)$ O! t: Z8 T" @4 G, f' a: M
{8 x! {6 X4 k# Z8 M( U- J- j2 I
};
; U/ [& S6 L, p, _) c0 z
' [+ i  Y: W1 Z( `+ W' e% Gstatic struct platform_device da850_evm_tl_leds_device = {
& P$ _+ F( v) ~+ `7 g( ~  [1 x        .name                = "leds-gpio",
/ m5 ~+ j" A, q& B# `" l( Y        .id                = 1,
+ G6 X- G2 A6 v# f' w) @( n        .dev = {
2 v4 S! ]9 k, [3 F1 H  S8 j                .platform_data = &da850_evm_tl_leds_pdata,3 r; {1 b; P$ A6 ?
                .release = led_dev_release,
7 J5 w# r: X1 e1 ]$ `9 x        }) n: z7 x. H) U; f. N5 {
};
+ q3 D8 j- ?  w: t2 K0 X
* ]. L  f! t' w; |' Gstatic int __init led_platform_init(void)
/ C, ]  w2 |% B- {{( w1 G) o. A6 ]  Y+ y8 W5 P
        int ret;6 }' L: C( P8 j+ h  j
#if 02 O( u* v8 q. h% e3 o  `
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);- S0 d* q3 ?4 y" K6 ^( T
        if (ret)/ m5 ]0 ?) _& Z7 g1 x9 }
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"2 ]8 f7 ^# b. h( a9 {  v
                                "%d\n", ret);
1 _# s8 }  W- @9 O2 ^) J  T0 r$ d#endif
# K/ w: G0 v2 D9 m+ }. D* I: _        ret = platform_device_register(&da850_evm_tl_leds_device);* {& W$ Y3 k( a0 U$ o" M' k: g# |
        if (ret)
; k3 T. J' v* k# b, }& @: [) v                pr_warning("Could not register som GPIO expander LEDS");$ C* }, p" j; y3 ^) V% d/ X5 c
        else9 A5 Y2 r& P2 M$ ^. b! ]0 S4 v
                printk(KERN_INFO "LED register sucessful!\n");" M$ Z! b3 o9 \/ ]" n5 g/ |
- P; T8 w7 v/ J! V5 i! f- k
        return ret;3 A% g8 G+ ^1 m: c0 ?
}- B3 N# k. Y6 k! n/ b/ b' V" ?4 a* h6 {

  U" ?& _5 O5 {# Tstatic void __exit led_platform_exit(void)& ]& H4 o/ ?% v
{+ c1 |* i9 d' K; C: {0 T, H
        platform_device_unregister(&da850_evm_tl_leds_device);
5 K- a+ O2 A/ h! M3 H! m, Z/ [8 j! j7 f* ?! Z! L2 t1 W
        printk(KERN_INFO "LED unregister!\n");
3 M' w4 c6 D3 a}$ D& s; @7 V8 ]8 q, s) h4 P) m
( M: D! d8 h& Z2 V8 |' t5 v, Z: C/ P/ F
module_init(led_platform_init);
3 _# \9 c8 `; P6 a8 D: p" E" wmodule_exit(led_platform_exit);0 D) o$ J' Y$ c+ j. r0 D! A
1 Y6 b2 O, O7 r) M
MODULE_DESCRIPTION("Led platform driver");: y/ }) V# _8 f- q' F
MODULE_AUTHOR("Tronlong");5 M. @9 K+ D: ~$ t8 q- c( E2 C* E
MODULE_LICENSE("GPL");' i( Y$ A) ~6 `. g4 o- ^; p

3 p  u' p$ m" Q  k7 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 20:51 , Processed in 0.038164 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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