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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。: M9 a8 c) n) @0 A. K, b
#include <linux/init.h>
: b; [# ?2 J: C$ |9 n+ E8 g#include <linux/module.h>
& s% _! x0 D+ h% t9 e" |#include <linux/kernel.h>% C+ J* ]; z$ X" b" p" @; C6 ~7 ^' I
#include <linux/types.h>. A* y  f/ T8 N$ S% B$ M6 U1 u
#include <linux/gpio.h>
! O7 s  z* U0 M8 b! r# z7 x$ E#include <linux/leds.h>
8 r- g" S( X- S" U# W- `#include <linux/platform_device.h>
$ T( d1 M/ L' L- `- E; S. v
, O! }5 y: r, f* i4 Q. O#include <asm/mach-types.h>
1 d2 O3 k7 n; E0 T4 F, k& `#include <asm/mach/arch.h>7 j3 |5 N6 y  x8 w& j
#include <mach/da8xx.h>+ h2 G0 P, |: a& }: w0 x
#include <mach/mux.h>
- w( I0 I$ j& x' L& X& {7 {' E
, F- {& l6 E3 U$ f: B#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
+ {/ `; n, F8 V" r- y6 b4 r#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)7 Y" \( E) c- y0 l! z9 V* E7 }/ \
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)2 t' c- q6 y; V0 g% @
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)4 |8 _3 b$ v/ ?/ ?9 t, {, v! T: e

: N- l4 U' E/ l& H7 O/* assign the tl som board LED-GPIOs*/! F; L5 _; c# p# [0 u2 H
static const short da850_evm_tl_user_led_pins[] = {
% @, o6 L$ c! y1 n2 _        /* These pins are definition at <mach/mux.h> file */
2 E2 c5 K$ \/ Y2 p; |9 r        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,9 ]+ C3 G6 @1 e8 }' C) [5 [4 A
        -1
1 p+ V, s$ D, f1 I) R% _" U};
8 }% [( C, T9 R, x# [" @* y4 B# A) \( x7 }9 C
static struct gpio_led da850_evm_tl_leds[] = {
  g$ k# M7 T* Z; O9 C        {
6 Z. r1 V- J1 L1 x/ g                .active_low = 0,6 |  S. h8 W; B2 B% n
                .gpio = DA850_USER_LED0,
5 Z/ Q! j" D& h                .name = "user_led0",( S: l6 z3 i9 G# l; E/ m5 ?5 u
                .default_trigger = "default-on",
; m) Z) X$ N# S0 z        },' k& Y  y6 x5 b$ W' Q9 l. y
        {
$ V- f# L8 M8 m; e                .active_low = 0,
1 W# V4 J1 z( F2 ~% I# k5 Z1 i# X3 I                .gpio = DA850_USER_LED1,6 w8 F& N' B% l, ?1 u& @6 d% u+ F
                .name = "user_led1",
# [% N& Q, W2 Y; f9 F9 Y                .default_trigger = "default-on",4 P8 U% B+ ~4 P, l
        },8 ~, G) j4 l; ^) T
        {
3 n" z$ X5 z% C# g; n2 N6 K                .active_low = 0,
- s9 n  }9 W, P; j$ |                .gpio = DA850_USER_LED2,
9 Z* M8 g) u9 v6 b7 `                .name = "user_led2",8 d: ^; [% X: E' @
                .default_trigger = "default-on",5 s2 \+ g7 @5 a: z
        },/ Q" L  G2 Y) A8 t
        {) K/ k! U3 e/ j$ K# F7 x0 n8 x
                .active_low = 0,
5 k5 ~5 E# t$ ?' ~                .gpio = DA850_USER_LED3,
' F, `0 y/ @3 K$ q5 _5 z  ^                .name = "user_led3",1 u# C) B2 f1 N$ z7 D3 u& C
                .default_trigger = "default-on",$ J) n5 k$ R6 D! l5 h8 X0 j+ Z
        },
+ |( d5 V0 O7 @& |) V( M};( [  z& {- _% Q: O# T* Z2 j

- Q- Q0 C! |- L+ T' y3 E% tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {; P* V+ {$ Y0 i7 _& |
        .leds = da850_evm_tl_leds,& \6 n6 q1 s$ k. l2 m+ y
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
+ B* s! a  k; Y! S1 u" J};# o4 D+ G9 v: a7 J9 a- M
4 b# Q- ?( y+ P
static void led_dev_release(struct device *dev)
- h+ m. F! n! o  A{6 S6 `! U0 Z' j% @  {
};
2 X( D& w# z% O9 b  u; q, `/ [' ?* f, ^/ v$ l4 K" F: O) z3 y
static struct platform_device da850_evm_tl_leds_device = {
- i  r2 |3 W# m: I5 t        .name                = "leds-gpio",+ E# P2 H% ^9 C& ]' A) d1 s
        .id                = 1,: V- h6 V0 \/ }/ b$ d+ x
        .dev = {
) d2 E) v, t2 {* I                .platform_data = &da850_evm_tl_leds_pdata,
' E4 B; d) d5 S, h6 b/ ~                .release = led_dev_release,
8 [6 B, z3 v9 S3 G6 P! X' \        }
0 K- y; V1 _& W2 Y8 }};3 u( Y5 a& Q8 M* Q9 C# p9 q

8 a9 F5 Y1 a( i  l3 S) \# bstatic int __init led_platform_init(void)& T* R) U+ i+ D3 ^( ]. u6 h! a3 U
{
3 K( Z- ]" C& C3 [  b1 \        int ret;
" W& v  z& ]6 }' S" C$ g#if 0
5 a4 Q7 K  w% k; }8 h" L        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
+ f" G7 J# O% k( Q7 J0 v% Q        if (ret)
" k& X; |& }( k. {, j6 z8 r                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"; P1 ~8 S0 z' r
                                "%d\n", ret);" z) ?# f, J) @, ^- O; O4 N
#endif
( j4 _2 L2 W8 x. o; x4 z        ret = platform_device_register(&da850_evm_tl_leds_device);
, r% B$ g+ e* Z% B        if (ret)
' D, \3 e6 E7 a- m% v                pr_warning("Could not register som GPIO expander LEDS");
4 L0 H6 \$ j- l, E3 f5 |  Z" c        else
9 G& U6 t1 \- E  q% L5 Z6 P: d                printk(KERN_INFO "LED register sucessful!\n");
! s5 Y/ Y- x7 r7 h) s4 F2 c( o/ R$ e0 z. T
        return ret;# w2 S. L6 `  K( z
}
0 e" _2 }' I) y* M/ a. N! f' l8 e
6 |- s& K- f8 v* qstatic void __exit led_platform_exit(void)% V4 t$ R3 @' B& ]4 e8 [. x  B
{
; P4 m. H, |! q, e$ q+ W7 }. \        platform_device_unregister(&da850_evm_tl_leds_device);+ H% y! \# V1 ^9 x. d( J! R

6 B- \: m' G2 n8 E, V        printk(KERN_INFO "LED unregister!\n");% ~( ]) L; b- I& y. K  S1 H7 o! k
}
0 O4 \, Q3 V8 Z- P' W- J" Y) k
" z& D4 F! ?0 P1 B3 Lmodule_init(led_platform_init);/ m3 h' [' m, i$ C. [4 ]' \
module_exit(led_platform_exit);2 @0 p2 S: c& ^, Q
/ p2 M7 @, Y$ _. P
MODULE_DESCRIPTION("Led platform driver");3 L, N( m: H- r3 e) k+ E# J
MODULE_AUTHOR("Tronlong");. U' W- I0 H. ^! b+ n" R
MODULE_LICENSE("GPL");" M# z5 E9 v5 Y. W6 \4 Y1 h

; N- j, m+ |% J& [) t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-16 00:17 , Processed in 0.040042 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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