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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
% L! `( D8 v  h- v) e, V" h; s4 `#include <linux/init.h>$ b0 \0 T- o. [; W  P, F; j
#include <linux/module.h>
  Q- i1 Q& R7 E5 t#include <linux/kernel.h>
$ x7 e6 S% t8 ^. a! g#include <linux/types.h>8 i% }0 u( C! y1 m% a- c
#include <linux/gpio.h>
- C2 ?! R" E- U  J6 Y* K1 B+ G; O1 \#include <linux/leds.h>9 @8 ^% G; X, f5 G
#include <linux/platform_device.h>
6 X3 m: _( [6 P) p1 z8 O0 {6 k+ ?$ E
#include <asm/mach-types.h>
. V4 j7 ^' u7 ^7 H$ r: }* B#include <asm/mach/arch.h>
/ S3 q6 F" `$ z#include <mach/da8xx.h>
1 f9 P/ u+ u/ o4 m#include <mach/mux.h>
! n/ ^% r$ f) d5 o  a, A: ^' I: |$ E7 x
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)$ A# d6 p4 V( c) s
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)0 Z8 v7 u8 [0 T- q. ?
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
7 A5 W# j5 _7 k1 X#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)$ x8 C( r* v* z' b6 A# G3 n

) b  s6 |7 g6 \* w0 \7 f1 b+ p8 X- E/* assign the tl som board LED-GPIOs*/. ?* p. k9 p3 l2 l7 j+ u/ z9 ?
static const short da850_evm_tl_user_led_pins[] = {
5 Y4 b! _$ P' N# Z+ E3 s9 o        /* These pins are definition at <mach/mux.h> file */
0 U! C: t6 h; a* c        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
" R. F5 `  ^: V% b6 W$ q& G) B0 r        -1
  J! a7 T! D4 S  J};
: z  q& @, f8 w6 T) Z8 M3 ~% I
5 k; _; Q4 u) u( d7 D' p5 S& [static struct gpio_led da850_evm_tl_leds[] = {" [( e4 S$ k6 c& k
        {
0 b# w! O& n# d2 w                .active_low = 0,  v$ V+ U3 t8 E
                .gpio = DA850_USER_LED0,7 u7 [& H* z# X* w0 U( t9 u8 v
                .name = "user_led0",
  \% W  u8 u( d$ V                .default_trigger = "default-on",
$ Y0 Y+ p9 p5 x- X6 x7 B        },
+ P- u3 L0 Y1 U0 g* R        {
- z' v  i0 {" r& k                .active_low = 0,  w. U0 @; e) H, r
                .gpio = DA850_USER_LED1,9 \1 Q( y+ i8 B+ G4 u# o8 H
                .name = "user_led1",
3 ]8 I: y* A( J* [# o0 D7 _. s                .default_trigger = "default-on",$ v, }% Q0 R  @5 Q4 [( {
        },+ }# s% B6 c0 X  q( h; D
        {8 ?1 P: a2 M: ]: s
                .active_low = 0,
" g3 t% @' v5 K6 E+ M7 e( u                .gpio = DA850_USER_LED2,  i& u" H& R3 [
                .name = "user_led2",
$ `3 [. _: d3 h; z( Q                .default_trigger = "default-on",
# }3 D& |( `9 ]# S1 f1 e6 J        },. T3 x- v! \# Y$ m5 M
        {. t. m1 ^4 e+ d% o
                .active_low = 0,; v- ~' }4 l" x0 r& ?
                .gpio = DA850_USER_LED3,6 B  H8 Y1 e2 F( d1 n5 M2 t6 w( P/ F; k
                .name = "user_led3",% y# x4 w0 J. `0 f
                .default_trigger = "default-on",
2 d5 G2 _8 d& e) L& g) \        },
; E# Z1 i- y; `2 u* T2 _};
+ e1 c+ M  p2 a8 w4 x3 w
3 G. P! n3 N* f6 A4 Lstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {3 x% N; _& L% G! q5 M! d3 `9 i1 ^
        .leds = da850_evm_tl_leds,
" E- |: W- Y  w! l6 Y        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),4 L7 d+ L! E3 |1 i  P
};8 B) F- E$ F! e5 X  C  Q- ]
6 s: \' }, B# U7 N' U' v
static void led_dev_release(struct device *dev)
& q& q: N5 N: h, `/ u{
) z- t, Y) ~3 k% ?};3 |0 F7 Q3 l6 ]; l8 R* m6 ?* M

1 ^) K5 p; ~& ~1 o: h2 s+ Zstatic struct platform_device da850_evm_tl_leds_device = {+ U% R$ _- o7 Z/ O! A/ A  m5 `3 h
        .name                = "leds-gpio",
+ [: h/ k8 K( G3 M        .id                = 1,
+ [) s1 c% w: r- O, h+ C5 G3 d8 @        .dev = {" @; P5 k( d( F( `* s4 Z
                .platform_data = &da850_evm_tl_leds_pdata,8 j3 |/ s0 k' |; z$ ^
                .release = led_dev_release,/ L& u& A2 }" I# o6 ?6 H
        }: t5 f4 ?5 @7 F" \
};
& h# x! h* |$ U4 p! S3 B5 |0 n$ d+ g
static int __init led_platform_init(void)
! v2 U5 T0 S1 }{7 o& h! V/ I' e3 m, L
        int ret;
' z! O, t& ?8 ~4 Y9 M#if 02 D2 C) _+ }3 e9 P) c0 D" E  _
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
+ f  w) J- P/ x        if (ret)
8 L! b6 n6 H  w; `0 S) z                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"3 |4 K. Q+ b: v/ p; h, z0 f
                                "%d\n", ret);
2 \5 n' h" b! y3 Y! \" c#endif
8 y0 o7 h/ Y2 K+ b6 S1 ~        ret = platform_device_register(&da850_evm_tl_leds_device);# Y  N- S5 h8 D7 q9 @  p3 T& y
        if (ret)
9 P2 ~" X. V$ x, X                pr_warning("Could not register som GPIO expander LEDS");2 }/ \% w, [7 c4 o  H/ S/ G
        else
4 U5 e. X+ W2 c1 e# M; y' q: c0 Z                printk(KERN_INFO "LED register sucessful!\n");, M  x% }4 X: M7 x
, Y* J4 Y/ y7 M5 s) l
        return ret;
8 B: M- ~7 ^8 g}% e5 c; d1 N6 a2 {2 }0 i* X& O

7 c/ ~0 O% i3 v; q9 c5 Nstatic void __exit led_platform_exit(void)
" j0 j0 n, l( ~+ I" a: _{, x$ N1 s+ Y7 u# h
        platform_device_unregister(&da850_evm_tl_leds_device);
" M5 N& r4 {  q  P0 s" S' P/ f6 C% d& ~2 V
        printk(KERN_INFO "LED unregister!\n");
$ f# ~* q' g6 U% k3 e$ p/ d: n# k" r}! g6 N/ {% o# ?! n/ p: O9 i

2 {( p6 G) i. K: t6 f( tmodule_init(led_platform_init);2 W+ I# e+ X1 h4 z' Y& \  x) ]  G
module_exit(led_platform_exit);
$ x% Z0 s! B& v9 x% j! {$ ]3 [- A3 b
5 p: k1 c+ g( z( a2 Z) y2 TMODULE_DESCRIPTION("Led platform driver");: g: c* q4 n8 j; p/ [- W
MODULE_AUTHOR("Tronlong");9 @5 `, b$ g8 v) q  Q$ Y: K( T- R
MODULE_LICENSE("GPL");. E7 |% n8 W: K' m. {4 h3 y9 I
2 Z- v4 h/ |, R  h5 U2 D0 L! v8 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-18 11:31 , Processed in 0.039503 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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