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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。% I" E1 J! `) Y, M
#include <linux/init.h>2 w$ L" f' k) y+ H& ?
#include <linux/module.h>
: V; A" M) t" l5 d/ a3 p4 i#include <linux/kernel.h>) u  P. A- M+ x
#include <linux/types.h>
* I  P2 H2 N- T/ t#include <linux/gpio.h>) n% d& m; ^1 d  C1 V
#include <linux/leds.h>5 m% c3 I8 G4 d. ?. p
#include <linux/platform_device.h>: b- e% X" Y7 C+ [3 h* v% n
6 F: g3 n0 w3 v) E& _0 t# S
#include <asm/mach-types.h>
) X( M6 P2 v  _+ L% d#include <asm/mach/arch.h>2 I& R/ _  k. i) k
#include <mach/da8xx.h>
3 {" P; |7 g, i; ]* A( Z#include <mach/mux.h>
# f2 t% N" G* n6 S7 L
2 h  w! |! W" o6 q0 x, ~" Y#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)$ v& ^% U3 Y( e& ^. y
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)1 E+ z7 n' |+ r) b
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)5 w' Z, i8 `9 E  S- p9 @& @8 t
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
5 M: X7 ]: D0 N
. L+ _' v- N) L, ]! o* V/* assign the tl som board LED-GPIOs*/
3 O; z: y# B1 J- x, Astatic const short da850_evm_tl_user_led_pins[] = {
/ i( B/ C8 Y* U6 o. G# ?1 S        /* These pins are definition at <mach/mux.h> file */
6 {4 v# `, r* k        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,( g- k8 s1 a; a. S8 x5 Z* _
        -1
% R- R* q) _4 }* |3 x0 q9 a7 z; T};5 y. M& @) S/ J; ?; x% g
  m6 R) y/ W' E4 G
static struct gpio_led da850_evm_tl_leds[] = {
+ A& x6 S1 J+ w: {5 ~$ B" f7 n        {
6 Y* s* T/ e! O: x; u$ [# a& h3 t                .active_low = 0,
( @+ z! d1 o/ z! K  x+ D" }9 N* E                .gpio = DA850_USER_LED0,
3 r- V$ W% \$ |$ h' A                .name = "user_led0",( E4 A' Y7 {- G! R
                .default_trigger = "default-on",) n1 G# H5 A5 Z& A
        },7 Z7 A, \2 @: U1 K' q
        {
, f6 m& e6 y; H1 O0 H  ~( z                .active_low = 0,5 _& d: _" c6 Y! ?9 m/ d0 x
                .gpio = DA850_USER_LED1,
) k2 G+ Z$ J9 g                .name = "user_led1",2 R. z$ `' u% Q4 s' T& z' l- g( z6 k
                .default_trigger = "default-on",* l" U% l- l- R0 ~! F, N/ Q
        },- ^( j& c8 p- l7 s- d8 @% K
        {
" u  L% ]# p! k) Q3 T                .active_low = 0,/ V7 R2 T1 {8 f
                .gpio = DA850_USER_LED2,
* z8 u8 N& w. q' Z& u                .name = "user_led2",
6 ~  q1 c* ]' Q1 ?/ M                .default_trigger = "default-on",! L" m' U9 L3 f# k) `/ g8 I
        },/ o- w6 Y1 y  a/ Y! @- ?
        {
* \" z1 C5 S. g7 O; `2 U2 G$ w) T                .active_low = 0,
) i" G/ w5 P+ o7 _' l' c' M4 ]                .gpio = DA850_USER_LED3,
# |; O1 I$ S  A- ^                .name = "user_led3",
: w6 ~( ]8 X% D8 f                .default_trigger = "default-on",! z3 m9 Y0 T/ D1 r8 [
        },
& U5 c2 }# M9 G) A; n};/ g7 ?# u/ G  y8 z0 j1 L: u6 Y

; i) G8 e/ }, C3 W# j' h. tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
4 |3 p" W- _! [/ A        .leds = da850_evm_tl_leds,& r% f& u# G) \+ k2 T  v
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
4 ~  M' r& J6 `5 s1 _. ~" H; J6 X};
. X" q( P2 n# E6 l7 N/ e# r$ }( x3 e% e5 v1 A! @8 \( j
static void led_dev_release(struct device *dev)+ ?4 \, S5 w: x5 o- u  _! _: J; r
{& v& a) S, n( p' u$ o. W4 h2 d
};% z, b2 c( a( T( L2 D9 F+ u' {

6 g, v8 |- L* _# c$ ~+ Hstatic struct platform_device da850_evm_tl_leds_device = {! }- g2 |. Z% S7 z9 ^7 p6 ?) ~
        .name                = "leds-gpio",4 c9 B/ J1 F% [6 e+ f
        .id                = 1,) e% S6 ^# `" o
        .dev = {) C1 A* R1 v0 r$ r3 V9 R- G
                .platform_data = &da850_evm_tl_leds_pdata,; n6 \* F* }% F; X0 |
                .release = led_dev_release,
# l! a- Q; ?6 X1 G' \        }1 A7 P/ B( Y7 G, \+ B  o% G% ~
};! }6 m% b( d5 H2 K  q7 j
0 }8 p/ Q- ]4 X4 {
static int __init led_platform_init(void)/ u1 N4 o. f) J' |' G6 r
{; E0 E7 L8 x- l% J7 p) a
        int ret;
$ B4 _- p/ C; t$ Q  A  Z#if 02 J- l% ?" M% `/ V$ S
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);  X% H; j& Y3 D
        if (ret)
6 d- u. B! t: j" O* a3 @# F8 {                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
8 K8 U% x0 T' a( U                                "%d\n", ret);, m& G" y/ j; K& t( U5 E. x" N
#endif
% u. v: ~" T) m& j! t- b        ret = platform_device_register(&da850_evm_tl_leds_device);: q9 _2 b/ R* _2 d* s
        if (ret)$ `& x% F# d$ U6 V) i
                pr_warning("Could not register som GPIO expander LEDS");. t1 r2 f4 b" U- K, w7 m, j
        else
0 d4 n5 c  k" h3 G                printk(KERN_INFO "LED register sucessful!\n");
, m& u. q% A, G" I" U. h) x# e" h
. {0 w& I/ Q' N+ f' L. P/ E        return ret;) p0 c; T2 V, @% K0 [8 c1 [2 W
}% O6 M( [+ ]: ~' c
' F* U0 Y0 ]; r/ R( u3 y3 p& x- h
static void __exit led_platform_exit(void)
- N2 g7 N8 a1 Y; V/ _* t$ Q: I{4 X+ H% T1 V$ Q1 k
        platform_device_unregister(&da850_evm_tl_leds_device);
% v. M8 o7 n8 V. j1 E9 V; M0 Y5 L; i& a; o
        printk(KERN_INFO "LED unregister!\n");
" K' ?% V( D% s+ s& @6 r}
: E/ _- N9 ?# `! k- f6 P$ T4 ~5 _5 _* F6 |# u! x& P
module_init(led_platform_init);
  p1 W2 P9 N# K: B9 _% _module_exit(led_platform_exit);6 m- o$ o. d: M- ]2 x
  G/ l$ \$ T; x# J* g  C+ w% k9 v9 A0 k- C  ~
MODULE_DESCRIPTION("Led platform driver");! C# o2 l( u7 C5 L2 F7 T
MODULE_AUTHOR("Tronlong");
) Z1 R" j" I8 K5 M6 R, _) R+ sMODULE_LICENSE("GPL");) m3 \. a0 |$ {( c
0 E- A1 {& N0 d/ M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-3 20:31 , Processed in 0.043008 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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