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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。7 R3 e) j, k4 ~
#include <linux/init.h>
0 o5 k+ ~- G6 D' `; P' i( n8 S#include <linux/module.h>
7 N' H+ n' T: b# b2 ?#include <linux/kernel.h>  a1 Q- w. D- N: }% z
#include <linux/types.h>
8 u/ O' S6 Y4 j* g8 D#include <linux/gpio.h>4 a+ k4 H' u' U+ x% J
#include <linux/leds.h>, e5 Z/ \# F) y' Y8 p
#include <linux/platform_device.h>
) _: ~8 g2 _9 Z
& g6 q# ?0 P8 q, f#include <asm/mach-types.h>
& {" [7 F& W) M; p+ _$ l#include <asm/mach/arch.h>1 q% X4 W5 |, R
#include <mach/da8xx.h>
* ~$ r3 A+ Y* Q# ]$ P#include <mach/mux.h>
, e0 D  U" b' @/ E8 J9 r# @5 N- G  a0 {
3 X4 L! `1 {+ y; `6 j/ M( S#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)( \) g( q) [  M4 i$ p
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
) R6 T0 v  N& }: l+ t, j/ U2 n#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)6 j, c8 W; ]; U9 Z: N- e& Q$ Z# h4 ^
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
7 u9 U& Y* x/ n# S* E7 R- z& A1 K7 d' Z
$ T. v) n) B: h9 K/* assign the tl som board LED-GPIOs*/
+ T% i% f! y( t2 M, E+ N' P& Xstatic const short da850_evm_tl_user_led_pins[] = {6 C+ @% ?& H5 M0 O0 b/ f" Z
        /* These pins are definition at <mach/mux.h> file */0 c4 b4 T$ K4 _3 k# a9 G3 Y
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
* o( y+ t7 d! H( [( D! A        -1
9 Y1 h. ~. ]; i, c: O1 E};
9 [" W+ t/ @  y) S7 C% d7 w9 U8 L& d0 Y# u0 q8 U0 ]0 e, s
static struct gpio_led da850_evm_tl_leds[] = {! o; B+ ]# z# x  V9 g' L% g
        {# L4 p/ e) a% ^+ F' Z6 N
                .active_low = 0,
: e" q- ^" ]4 P: n                .gpio = DA850_USER_LED0,8 c4 ]4 S; `# T  J6 S0 z" B
                .name = "user_led0",
6 S$ w5 Z0 T9 j, `' i% S                .default_trigger = "default-on",
( ^' Y3 t$ ?' P* z. v        },
0 K. C  y; |* A3 N        {
; L4 O( W/ S8 |4 _8 O                .active_low = 0,! E# |& f/ r7 H
                .gpio = DA850_USER_LED1,0 Y2 F( n1 T4 c( C, }, l
                .name = "user_led1",0 X+ u+ ^6 r% N+ T) ]9 ]& k* o% M( Z; T
                .default_trigger = "default-on",
" V( ]1 k7 s& g        },$ f8 L( k# }5 h# f8 y
        {
0 l! p1 q$ L* X' B                .active_low = 0,
5 P8 h0 l, p# i$ W) H& F                .gpio = DA850_USER_LED2," _, u4 O; p4 T' k) s4 ?0 p
                .name = "user_led2",* y0 P6 C" ~; L/ T' Y
                .default_trigger = "default-on",2 a8 `/ K1 T  s; |
        },- [, P5 n3 d/ G# I1 G
        {
! O! m# P, k& d  `, D8 w2 r                .active_low = 0,' h% ~( Y: q) H5 o" [
                .gpio = DA850_USER_LED3,2 a9 i7 z' y! T1 C4 @. V- q
                .name = "user_led3",
5 b  U  [( V6 B4 O4 f: F, [                .default_trigger = "default-on",
: _& x( k7 s! F        },
6 d) T6 _1 e3 f6 j# v) H};
0 C7 L  v  o; m5 q1 Y6 C
& C5 b% O, Q1 h  {/ _0 U( tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {/ G* e: u. U; F$ e, A
        .leds = da850_evm_tl_leds,7 D$ \) g: n/ ]) C, l- O$ s
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
- Q( n2 |/ ~. `0 d* R/ J" |  e4 Q};. m4 V0 Z1 ?& P2 e9 p
# h, E4 X+ T+ E6 A
static void led_dev_release(struct device *dev)
; c7 m& V  j" t! U: s) J# b{
9 S, ^5 ?, q" o' W, K* Q5 c: O3 J0 i};
. s2 M+ x* M8 B) {0 G) `2 W( e% h% [% Q  _9 Z2 \& r% n
static struct platform_device da850_evm_tl_leds_device = {8 s9 H/ ~. Q  c, v$ Z3 L9 r  H' c# t
        .name                = "leds-gpio",
7 J3 d5 y% G  m: \% X2 J0 {        .id                = 1,  d' W* q4 H6 U7 P
        .dev = {
: T7 _0 B8 S  y5 K4 M$ u+ ~                .platform_data = &da850_evm_tl_leds_pdata,$ V% C2 K. v2 g# b8 g& q
                .release = led_dev_release,
8 x1 y' y; }& M: g        }
' E3 g5 R7 h' Z7 A};  C7 V+ v- I3 n& N9 E
( s4 f, e/ _" c+ J
static int __init led_platform_init(void)4 }: Y3 ^. p( K4 `+ V, Y& r, @% b. U. A
{  B7 M2 |" b, Z# X* F; a" ~: }& e! `
        int ret;
, N: u# ]) i% m0 X' Y4 i+ I3 X- C#if 0
0 i( p1 _0 r) q. E/ r        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);$ S' f6 |  a4 N; }. c8 e1 y$ ^5 @6 k9 N
        if (ret)/ a6 ]5 R7 A! J; }3 c
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"# R1 C/ \. W3 e6 j# L. J# m( t
                                "%d\n", ret);2 c3 ^( m' |# M' t
#endif5 n& ~5 g9 {4 f5 n" {! Q: W
        ret = platform_device_register(&da850_evm_tl_leds_device);
% ^0 o  S6 n1 f' \: R0 K5 `; {: a        if (ret)& W* U' C+ j% N9 z, ~  v- [
                pr_warning("Could not register som GPIO expander LEDS");
% {2 S) ?4 T' |( k1 ^/ \        else* g0 U% t0 T$ Q' e
                printk(KERN_INFO "LED register sucessful!\n");
. {- x4 h" R, c9 p" U5 Q
) Z$ [( g% W( N  D1 P* M        return ret;) y6 N9 |% b9 i7 v9 {5 ]
}8 p) L, l; p8 D5 s6 O' b5 M' H$ P; b
; l. H4 b' Q& o
static void __exit led_platform_exit(void)
8 c' h5 j% d( ^. o5 O& i2 L. F0 G1 [{
) D1 ~  Y2 F4 D: i- P  f& `        platform_device_unregister(&da850_evm_tl_leds_device);7 h& ?& m; x9 `  j; W1 X0 G+ O: ^3 m
8 H% L3 D1 Z7 H+ \
        printk(KERN_INFO "LED unregister!\n");
' k, p; R. R  R  g2 m. t7 b}  l6 u1 R0 i. d; c" [- r

, |& y# Y0 H1 R% F3 Tmodule_init(led_platform_init);
8 m9 p/ a1 v; R" ^3 y* w& mmodule_exit(led_platform_exit);
' L0 l6 d) P  E& H( y9 F) d) ^6 E9 `3 J6 @# Y
MODULE_DESCRIPTION("Led platform driver");2 d2 G( n2 y. b
MODULE_AUTHOR("Tronlong");, d0 c  w) v* H* O. u% _
MODULE_LICENSE("GPL");' q2 k$ f+ i% d5 u& q9 Q

  H/ \% p( g+ }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-28 14:19 , Processed in 0.039139 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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