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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。3 B$ \9 b) m, S0 n+ }( J
#include <linux/init.h>, X" a( P( Z+ T2 a
#include <linux/module.h>
( N2 {6 H5 \. M  K#include <linux/kernel.h>
: |7 d1 c+ H( I4 H' t* H#include <linux/types.h>
" @% M/ L& H: a$ F) z#include <linux/gpio.h>
$ a. O* \& D9 t( n; M  L" c#include <linux/leds.h>% I- p' }( d1 O2 L" I6 @
#include <linux/platform_device.h>0 U) g, _: r. [3 m' w( i- Q
( v0 u6 [5 X6 b, Y& a" E
#include <asm/mach-types.h>
4 J* \3 b& G- P( C+ n#include <asm/mach/arch.h>8 H* g3 A; O% e# {
#include <mach/da8xx.h>
' s/ ], m& [: {0 l#include <mach/mux.h>
, m* U2 v& I5 y" N0 T, [, x
: r4 F  c0 e2 q#define DA850_USER_LED0        GPIO_TO_PIN(0, 0); L& P6 G" f; M: J% d# ]3 G
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
: Z/ t) D! z# i# Y+ I4 g#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
8 p- ~8 |, }* s, k/ H  I5 l+ \#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
" g4 A; t/ N) t. u5 g3 y7 z! N8 b9 H" N2 K
/* assign the tl som board LED-GPIOs*/0 i$ i! ]  a1 \! ]) o1 \
static const short da850_evm_tl_user_led_pins[] = {
9 c! z1 ~) g  c( P# Q        /* These pins are definition at <mach/mux.h> file */
: M' v9 U  _, N4 u2 ?/ E. M        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
6 i( S2 k* ?8 y+ `        -11 r4 Q6 K8 E& \! j3 `* ~
};* V, I5 b+ P6 W1 d9 e# H6 e

* H9 w/ N' o! j- p# Qstatic struct gpio_led da850_evm_tl_leds[] = {
. j: M1 O5 i6 C2 \        {
! G  A& m6 P/ d) `# ?0 W. q                .active_low = 0,% [/ L& w) X' ]9 @) A$ X
                .gpio = DA850_USER_LED0,
% F3 s: x  _8 h9 H! K                .name = "user_led0",
- ~/ y1 \3 U$ w# E& t  `$ T# |7 ~                .default_trigger = "default-on",. j* m' t6 E# X- ?7 j. u
        },
  @+ t- A3 d) [& Z/ \; b% `$ S        {' Z4 O  Y1 P, u9 c# ]8 {
                .active_low = 0,
. ]+ {6 b% ~1 a, i! Z                .gpio = DA850_USER_LED1,3 ~# q) u/ s. Y% d8 ]
                .name = "user_led1",
7 g; G  f, h- Z                .default_trigger = "default-on",) K- m6 R; x+ ^: t
        },& ?' f* z: `) h" }2 h( n; `$ I8 b% }
        {8 N6 x1 F; y0 {% N8 O" d/ ]- |: R
                .active_low = 0,( b4 [/ r/ A8 M! a3 `
                .gpio = DA850_USER_LED2,6 Z+ H, q( M! h' k+ E! l, M
                .name = "user_led2",( A# }2 c1 y- Q  c. Y9 J$ w' ?: |/ G
                .default_trigger = "default-on",
. N% M6 G$ ]0 `        },
. _' y: n6 ?  ]9 A3 N        {
3 z; I$ k& N& n                .active_low = 0,
4 a4 y6 n( x) w3 L! J                .gpio = DA850_USER_LED3,
3 Q/ Y, Q+ q& S, T( v- h                .name = "user_led3",  s, d9 l4 s$ z# O
                .default_trigger = "default-on",
. y9 x5 C6 Q& z1 s7 G0 K6 Z3 f        },
3 M; y6 K1 E7 V};$ k2 |: P2 O9 q8 ~& o$ c

: O" d& L! Q) }. Ustatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {# y( W( K$ n3 Z5 u: L9 Q0 v: Q. _
        .leds = da850_evm_tl_leds,
# s4 r6 q6 C. U! Z        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),& V& l' a% [' }& t8 W
};
8 Y' q5 j" o. z) [
- I2 d4 g' P2 t1 ?1 a6 s& j1 wstatic void led_dev_release(struct device *dev)
& @- ]3 ?0 z8 Y( w' A{0 h# z3 z7 W% ~0 i+ A
};5 i% G; X( Y( f9 @
: {6 d4 P' A" [7 [, @
static struct platform_device da850_evm_tl_leds_device = {
  _& W) r. h4 h) C& h        .name                = "leds-gpio",
+ D+ d6 z7 s: P. M        .id                = 1,; G/ n0 o$ A1 y% H  M1 f
        .dev = {/ W2 s% ?$ G9 Z  {& x" ^
                .platform_data = &da850_evm_tl_leds_pdata,/ d6 J& @9 E) C0 ~& D0 e( t
                .release = led_dev_release,
( G+ c7 i: D8 t# b/ Q        }3 X8 w' F6 {4 X- w- ~
};+ V4 W7 B. O( W2 n( M
* N' q* m5 m" i8 S2 u" I  }
static int __init led_platform_init(void)
" q- p% I" q( i8 n# Y; ^* b/ T  c{
4 Q% t- |4 X# `( k" t2 W        int ret;% Y/ T$ p7 q$ k2 H* F& r5 n! x
#if 04 X8 r2 j5 |7 p; K5 y8 h
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
/ f% h5 ^: m2 y8 _! N# u$ o        if (ret)
0 ~; K7 f# I" \# M# P! R2 C6 i8 u( Y                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
, O. ]$ i. e: X+ c- U0 q                                "%d\n", ret);3 N  H9 n+ H+ @, Q& t' ^9 O
#endif: [9 }! J$ d* |1 b0 ?/ t5 X
        ret = platform_device_register(&da850_evm_tl_leds_device);
! M9 T% A6 ~- v6 {" w6 E/ n+ [4 R        if (ret)8 P, [8 T- q! S* Z' ?: L+ g
                pr_warning("Could not register som GPIO expander LEDS");
4 R/ w7 S1 P' \4 @. X        else- Q, \2 h4 G1 d/ u3 `# M
                printk(KERN_INFO "LED register sucessful!\n");" I6 m% Z& v; \3 R. J9 F

& ]5 q; W* J# x% E8 o2 g        return ret;% c! n/ L- S9 y4 ^( d! w1 M! M
}: I" _2 a; J% H8 r. }+ T% i5 T9 s

3 {1 w  _7 O1 X, @static void __exit led_platform_exit(void)' z+ u, T5 a; `5 y3 Y7 V
{7 N) `/ F# T5 g4 A$ m/ h1 `0 R$ H
        platform_device_unregister(&da850_evm_tl_leds_device);
% r2 ?' H0 D/ B/ h8 C- e' ^) P! r. r+ [& I5 o& v9 o+ p2 V
        printk(KERN_INFO "LED unregister!\n");2 q( Z$ _* Q2 w& f
}( d7 w  k; n4 o/ W- N$ X5 F

. }, `- x5 E' ^( M+ A9 lmodule_init(led_platform_init);1 @/ F6 q. H; g
module_exit(led_platform_exit);
) {+ q; P. M* z) V5 t. j0 l/ U$ p. A" `, K. N$ f3 h
MODULE_DESCRIPTION("Led platform driver");/ k9 \% P! b) O8 I. o. c' {
MODULE_AUTHOR("Tronlong");
& u9 \9 ]  r9 Z/ tMODULE_LICENSE("GPL");
7 p9 E0 O/ T+ G8 \7 A2 {+ J8 r+ ]+ R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-1 20:38 , Processed in 0.044862 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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