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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。. H0 y8 X1 X( p# t, e4 L. Y2 L
#include <linux/init.h>
% X* N; @: c- Z#include <linux/module.h>
; W0 ~6 o5 F% n; c6 @% N" X#include <linux/kernel.h>
( [) l" e2 |, |" `) Y# d3 |% L9 S7 b, S#include <linux/types.h>
9 b0 m; k/ V+ g; y, R#include <linux/gpio.h>. |% Q, o' P: ]: g! \0 n5 p- j3 q
#include <linux/leds.h>  u' \3 x5 `0 V( B, @
#include <linux/platform_device.h>- u. Q" P: p. E! D& r& l

9 L/ W: Q# ~$ x, L* f#include <asm/mach-types.h>
2 G- \& z( J$ F#include <asm/mach/arch.h>) i& ]4 k. ]. ]4 e; _# j8 R
#include <mach/da8xx.h>
: o/ ?' g6 b- y* x, Y  s$ ~! Q; l#include <mach/mux.h>
' R* ~  O; N3 E' v3 S8 m
* @/ w6 G3 a! c2 h9 y. K) g#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
' a4 t# U6 r7 R8 D#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
  s% X" G, l2 }. U8 x; l#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
. x# v) W: ~4 |; _9 m6 W- f#define DA850_USER_LED3        GPIO_TO_PIN(0, 2); u6 G7 p/ I  Q7 ]
9 z" W* ^- u" T' L' ~. `
/* assign the tl som board LED-GPIOs*/: h- E- ?4 r/ Z% m1 s
static const short da850_evm_tl_user_led_pins[] = {- R- j% e  K: x4 Z. l( h/ l. l7 R" K- k
        /* These pins are definition at <mach/mux.h> file */
) D6 S. x0 R: Z: M        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,0 b: _2 U% l- \3 Y0 J9 ^9 \
        -16 E& j# x' H" ^+ Q8 M
};; o. ]! k+ K9 ~  [0 {
6 L) Y; x. S+ K9 _! `$ e' _# P
static struct gpio_led da850_evm_tl_leds[] = {' w" N  D, @- J
        {
" a: L+ g: d( k& p3 G) g7 b                .active_low = 0,) W  |9 T7 |. G0 k1 i: z6 [1 q7 d  q
                .gpio = DA850_USER_LED0,
1 V% A: V$ R. L/ `                .name = "user_led0",  R1 O: t8 e" `  A' {; Q- \% N
                .default_trigger = "default-on",* h: W6 W- B+ o, F2 m1 K) q
        },; p( n) @6 J& z) L; ]
        {' ?& e. R6 F) _
                .active_low = 0,
4 \9 O3 Z2 j% _- V/ ^, @' r                .gpio = DA850_USER_LED1,
) _5 {% Y1 @9 f$ r7 I                .name = "user_led1",! i" t5 g2 q$ a/ t, @5 p3 s
                .default_trigger = "default-on",
, f9 E- K1 ^# n( L* x$ F        },
* B% h  d+ N+ E) z0 x' n: G9 W        {
( c  G0 r% y; k3 t3 K  ?' M% r                .active_low = 0,$ p0 i! _( s+ p2 B( F
                .gpio = DA850_USER_LED2,/ p3 b7 o3 j% x- |
                .name = "user_led2",
/ v3 b5 M" n4 ?                .default_trigger = "default-on",
4 W4 E1 g# h+ H  W        },
  ^9 J; W4 X7 w: u) ]        {
+ v) k/ {2 A- q6 p                .active_low = 0," R! u" H2 ~( u3 X- K
                .gpio = DA850_USER_LED3,
. K7 X; i1 W" y( R/ \                .name = "user_led3",' j4 |0 ]3 V' {6 a5 O& a4 U, n7 j
                .default_trigger = "default-on",
; o* Y# O6 J6 P0 s* ]5 J        },! B6 u) {) j3 K% `) _; u" q
};
" t" p  n, r" O5 T) B
$ Q; y( K" ^# b* t3 Mstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
8 _% I% O8 b  N3 w" J( O0 b/ n        .leds = da850_evm_tl_leds,
5 g* S0 e( v+ R* c9 x% f' n" f/ J        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),' U# Y+ G' V" n8 P8 V8 i
};
5 \: q; c0 e1 l- P) D2 Z
+ I# y  R# i4 T5 o! I7 i/ istatic void led_dev_release(struct device *dev)
: w+ P. }: j) B" _# N4 F! H) T{
6 Q! \" [' l) r* [/ s+ c) ~$ ]" g. ~};
* V: ^; e4 O; Z4 ?
- g$ a4 I: n4 V, e6 Kstatic struct platform_device da850_evm_tl_leds_device = {7 W: \5 r, i1 u/ y
        .name                = "leds-gpio",
9 W4 b+ z0 w: `) ]        .id                = 1,
+ V" r) p  O& D/ ]9 o6 x% e" L        .dev = {
" q+ j) K8 V2 v* k                .platform_data = &da850_evm_tl_leds_pdata,
! @  @# e, \2 ?- E, L/ a                .release = led_dev_release,5 a4 v5 X$ _* h; ]: Y* i* ?6 s. f$ t
        }7 X2 u0 o+ N% c% R
};: r& n6 R# q. N2 J6 `
1 c" X, R, Y8 k- Z
static int __init led_platform_init(void)
8 V$ `' p- a9 [. N: ?{7 W, o! H" M% ?. c  A
        int ret;! a4 [% }% i3 c5 r& Z( g
#if 0; K' `3 S3 D% @8 y4 V
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);; J5 x( x1 p9 a
        if (ret)
, c5 M# \' E2 a3 f  n                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
+ N. b5 @# \1 A& F* \                                "%d\n", ret);% |1 R  N8 l# f* Q; F* W' L6 m
#endif
" {) r# |; m* P4 O  ?+ k( U        ret = platform_device_register(&da850_evm_tl_leds_device);
4 w; T. T0 @! U/ [) _* d; F% @        if (ret)$ Y; {% A% ^4 D% b6 G+ V
                pr_warning("Could not register som GPIO expander LEDS");
5 i3 M. }- b6 Z& ~' a  E        else
0 Y: F0 S/ M5 k, H' ~$ F9 k) r                printk(KERN_INFO "LED register sucessful!\n");
0 f. w0 V% H0 o7 B
, N) r5 N" M+ [" u4 p        return ret;: P$ E7 ]1 }' j4 f/ s
}' m6 ]! @9 J4 w: P# W$ u0 X
  B4 a: F; ^# h/ t. ?( f- n
static void __exit led_platform_exit(void)* [/ m9 ^: p3 T6 Z  P# |4 i
{
" n6 x6 H3 u" H3 ~. d) A( f        platform_device_unregister(&da850_evm_tl_leds_device);
4 m$ b6 x5 B% S
1 c" ?3 i/ Q/ e! `, U        printk(KERN_INFO "LED unregister!\n");( T. F8 b& b' C  ~8 E; J/ H
}
6 H$ {. T3 w2 ]1 O; z& k3 Y
4 L7 K. F+ R4 t& J2 c2 ~module_init(led_platform_init);
/ l$ c5 j; S( O$ ?! @) Dmodule_exit(led_platform_exit);. C; V0 q) ^5 w' P3 _3 x

1 t! D9 v' D0 y. t6 Z8 l5 \MODULE_DESCRIPTION("Led platform driver");3 K( S7 i4 d1 X8 `5 z! w; Z' ]
MODULE_AUTHOR("Tronlong");: C+ O4 b8 F; N) y5 A
MODULE_LICENSE("GPL");4 t, Y% n$ P& f: O( F! Y. _: o

# E% `3 b/ @1 j. t3 b# G" [0 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 12:40 , Processed in 0.039074 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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