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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。$ I7 W5 h( j; @
#include <linux/init.h>
. M# Y. W, H/ r3 C! U#include <linux/module.h>% W- U  u+ c1 `) p% Z. X4 E1 G9 s, Q
#include <linux/kernel.h>
& Y  B; ^$ f! z" y( w) l#include <linux/types.h>3 O6 y! o& C; h. y
#include <linux/gpio.h># A7 X# {9 C1 C$ C
#include <linux/leds.h>1 N4 k7 S1 X) N; j. v8 k1 s
#include <linux/platform_device.h>0 J' M. ^7 _# ?+ \

8 F' \; n. E: a$ T3 V3 h#include <asm/mach-types.h>+ t& e# w6 B  ?
#include <asm/mach/arch.h>, e+ N. X$ u" c2 U. o
#include <mach/da8xx.h>8 C" p( O5 G! Q5 y! r+ m1 E, i& y
#include <mach/mux.h>  a' R4 X4 o) P4 A

$ e( j/ q) ~9 i#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
+ R5 Y; p! Z: R5 G/ w2 o#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% s. p# j6 J- g5 `6 T$ p" }, t+ L
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)* n4 G* N& ]4 |
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)0 B, A( l7 Y* z  n# G  s
1 Q; {  b4 w, ?# \1 d) E
/* assign the tl som board LED-GPIOs*/; Y# N# @+ I: p8 H0 l& q
static const short da850_evm_tl_user_led_pins[] = {5 h- _. Z/ J" f/ r
        /* These pins are definition at <mach/mux.h> file */
$ C( A5 a" O2 ]) c' k4 U1 D# Q        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,8 N1 ^" `+ ~# {
        -17 k3 K- l4 ]' F& E2 N/ ~' U
};
; l0 f4 I  T- l4 y- M6 P& w
0 T, g5 [0 ?1 n6 [: p6 Hstatic struct gpio_led da850_evm_tl_leds[] = {
6 M7 R$ ?2 F+ r. j: R+ a        {
# I! t: Q8 O. Q, r# @  U8 x2 o6 ]                .active_low = 0,; @% h# G4 d# `% {/ h1 G4 i
                .gpio = DA850_USER_LED0,
+ S% A! D5 ~- e, L                .name = "user_led0",
: f" s( I' ^7 k- N* v. r1 }                .default_trigger = "default-on",- }/ P! ~0 p% L; A- B/ q
        },
7 @& d4 y+ [( {- U( x" F3 G! K9 V0 f        {
, P; G5 p7 [$ K* j6 c                .active_low = 0,
  K( A" K& h0 e( _. S% x3 _! g                .gpio = DA850_USER_LED1,5 A2 ?7 g# ^; h( _) {% m
                .name = "user_led1",# U& M7 Z9 y7 K5 j2 g$ P5 T4 ~9 Q- l
                .default_trigger = "default-on",- N7 @% Y' G: f& _, K1 n" p* ]8 q  y
        },1 {9 `+ n' Y$ h. u/ }
        {/ `' B$ H7 t% \- U5 t0 \) H
                .active_low = 0,
4 d7 ]" c$ K9 D                .gpio = DA850_USER_LED2,* R  l6 U9 U  D" w7 U6 u
                .name = "user_led2",7 k( _" M2 `. x3 }% J
                .default_trigger = "default-on",
$ ^* g* @" u1 ~. _        },
' N0 @  t, u& X0 f0 d        {) V+ e3 O4 U( w5 B, ?4 U- P
                .active_low = 0,% b, c7 J" \7 W8 s* @# S+ T( x
                .gpio = DA850_USER_LED3,1 U) H: N, G+ R" P) a( S& {; V
                .name = "user_led3",: I/ n  T: B/ ~8 `8 b3 E1 f, g
                .default_trigger = "default-on",
) U( U& S$ W# ?. o        },7 I" \! Z) y. V6 G- K) m8 t0 U  k* W
};" e; Y/ A: o  p. i/ n" w) h1 P2 ]

9 _; h" T; H% r0 h' zstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
* D; M( s  W$ [: |- w        .leds = da850_evm_tl_leds,0 J# l( ~0 ]) ~# v; P! e
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
. V4 ^, v! l& I3 x4 B};
. e6 r9 a) m" p
2 o# Q6 Q4 w! }9 jstatic void led_dev_release(struct device *dev)3 n; I; a0 d$ f0 R" C( X6 j
{; |: n7 C% G) H$ h- l
};
5 C$ _/ K; s; S5 P
& v; ]+ K. `+ j, |0 v' hstatic struct platform_device da850_evm_tl_leds_device = {
; w3 ^3 O4 R' g6 ?, H        .name                = "leds-gpio",% d; }1 x# p% v  v8 {" `/ ~
        .id                = 1,
3 ~% a! H  I# j3 x% t  u. L( T        .dev = {: o" r" H5 B! g( q7 y* v# ~7 T! A
                .platform_data = &da850_evm_tl_leds_pdata,1 e& u1 y6 v, m: r
                .release = led_dev_release,7 |( ^7 ]. @6 S$ n* }6 p
        }
. Q3 `! X: U6 h5 s0 @' w};" w9 H, O4 R$ f* \
  w, n4 C$ J' W! z; ^" o) t
static int __init led_platform_init(void)1 ^: W  g1 A8 t/ a
{% ?+ F  v1 ~4 M4 X; q% k; @0 M
        int ret;
1 @# q5 I. r0 g/ m#if 0
9 l# q3 W, _7 `! @' ~4 j6 i        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
2 X3 P3 A5 X( y2 ?' S+ j        if (ret)4 Z5 z- u, z8 g# H! _3 Q2 _
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
6 X# E. h& w2 i1 H& I& P9 s                                "%d\n", ret);6 F! s  K1 R5 U; r4 W
#endif
1 J1 M2 _  D- |; W        ret = platform_device_register(&da850_evm_tl_leds_device);
, |2 l; i: A% A. v" D  }& f# |        if (ret)1 e+ g* u5 j& f+ @/ R" D
                pr_warning("Could not register som GPIO expander LEDS");
- \2 ?1 Y( [, S& @2 [, E) p        else" Q; J+ o0 Z) w# T1 h  U$ e
                printk(KERN_INFO "LED register sucessful!\n");' z" a6 s8 }) Z/ X& B
( _. Z4 t- J7 y0 `# g) x) U
        return ret;0 S- Y( }6 o3 m9 B
}
+ k0 Y; `' _5 n4 O6 C4 i  g( T9 o9 Y2 J, r5 T; P3 c/ J- E* `
static void __exit led_platform_exit(void)
* S0 j5 I" D$ O/ Q9 a% w* f* m& J% x{
$ A! t6 u2 d: y0 b: q3 t4 a! O& Y1 Y1 r        platform_device_unregister(&da850_evm_tl_leds_device);
7 V5 h& G8 T) O7 n0 Z
; m/ c" u, \( ~        printk(KERN_INFO "LED unregister!\n");- a( \1 h% R* G5 p9 w) |) s
}
8 t! R! j- j# n: }! t& p: D3 O
& Y7 _9 y; L0 G, W5 |  ^module_init(led_platform_init);8 _2 F: b" H# i- v  U  H* u
module_exit(led_platform_exit);& H+ g" R+ i- h  K

$ F+ o4 h* \( A6 V( p9 j8 xMODULE_DESCRIPTION("Led platform driver");  V; W) }6 v( v! e1 R  @
MODULE_AUTHOR("Tronlong");
0 r" e6 G- F# R" C+ \MODULE_LICENSE("GPL");
# O2 ?* l  r8 o: S) t! S! V
2 |3 T& V& n$ X( I* C' A7 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-12 20:52 , Processed in 0.039601 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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