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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
- z3 g1 P; a* f. z" R- @#include <linux/init.h>! }/ a  F4 w$ A1 n/ Z
#include <linux/module.h>! u3 @. |/ z4 Z# e- j; A* l
#include <linux/kernel.h>
6 n6 w' y4 b9 a( K#include <linux/types.h>8 g' x( O! i; a0 |
#include <linux/gpio.h>. f4 P' R1 N) K4 A
#include <linux/leds.h>
( I; j4 A1 Y1 g5 d5 v6 \#include <linux/platform_device.h>
+ e# R, b  [' D" e# b( t# @- d! z7 R% ~" T
#include <asm/mach-types.h>
  B8 D2 t9 K3 Y: M( W; \. v#include <asm/mach/arch.h>
" m. q* W2 P0 Q8 n#include <mach/da8xx.h>- x( Y7 F. t. d! @$ |
#include <mach/mux.h>
0 N& i+ H' @$ Z7 f, k6 f- f3 L
- l# W2 s  [% n& B9 c; e$ e#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)" ]  R' ^7 G; J6 ^& D
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)7 t. C+ g4 j* q+ V5 p* ]9 @
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
1 j" h! }$ A' w6 M& a6 C#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)* w6 T& c7 a! H

) m6 T! }; X( m  D# r/* assign the tl som board LED-GPIOs*/, b% Z4 h# ]; x% M, T; Q
static const short da850_evm_tl_user_led_pins[] = {
. ~  _) R# Y6 d        /* These pins are definition at <mach/mux.h> file */
$ W1 ~$ W! ^8 U$ @, v/ |# `/ J        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,* c( f4 W  }, d% m' I
        -1) W! C4 u$ P9 t+ D/ Z3 B
};+ N+ x* v8 c; c$ c# u0 W

9 d4 `3 B" R  P; D1 B) ^  Estatic struct gpio_led da850_evm_tl_leds[] = {
! v4 h4 }3 M- |! Z) q! _# ^4 w4 N        {
5 t, ~+ M# ]5 z9 ^                .active_low = 0,
" f3 {8 I2 n. v0 F  |                .gpio = DA850_USER_LED0,! s$ g2 K  X& f4 q# ^
                .name = "user_led0",  [6 l) d1 `; t! ^) ^; L
                .default_trigger = "default-on",) L, \! ~- _& V9 }5 G4 p( t
        },0 M, q; M- n% i  o8 Y5 l
        {9 Y* a5 F9 H( c! U3 l
                .active_low = 0,1 N6 {: h: J  `5 @6 n5 ^$ g
                .gpio = DA850_USER_LED1,
+ J. c/ t! k* L# Q( O                .name = "user_led1",( {7 o/ j! E: E$ D
                .default_trigger = "default-on",9 }- y- N) s6 h* h! N+ y# X0 s
        },
+ i$ d$ k) A" t! F2 S1 C  X        {
# Z+ O) s4 L- K/ `! m                .active_low = 0,
- K; x& \6 ^" n, @                .gpio = DA850_USER_LED2,
' R8 y/ g( f. o5 ?0 G- C                .name = "user_led2",- n1 v2 i; [* y3 u+ m9 s0 }* Q
                .default_trigger = "default-on",* [! S( \7 H" c4 ?0 l2 @: b" r8 o
        },
+ p- }  i% p" a2 I        {9 A# k" c* s( z# B" b- c9 t$ J
                .active_low = 0,; L3 Q4 a1 f! c  H& A
                .gpio = DA850_USER_LED3,
8 p0 L: _* y4 S1 [2 i4 o, `) }' q                .name = "user_led3",
  i. ^* H5 \* ^                .default_trigger = "default-on",
: Y; x; }# a1 P% Q3 R        },7 F, n  e; E9 @8 H! l8 q3 p
};
. }* @4 {$ f+ U: A" K
9 [7 B  _5 j* N. ~' j, zstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {5 u, y  N* y- C4 S$ O; H5 m
        .leds = da850_evm_tl_leds,
) d) `, H3 I; {! w1 w& ^        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),3 P- \; N  E* P6 J+ U) x) t2 ?
};" t- K! {/ V8 F
. `" [: d+ W0 u; R( j! e- P- S
static void led_dev_release(struct device *dev)
' T" K# |0 A2 i) S0 V/ w{
6 ~+ D& Z+ z+ I2 M5 X1 Y; ~, R};  Q# Q- j; m2 y# d( o' z* v

! K1 R% W/ h  Astatic struct platform_device da850_evm_tl_leds_device = {
9 W. Z( B: O# N8 J        .name                = "leds-gpio",2 w* [+ z! W. L! Q' h! i
        .id                = 1,
0 W: P* I9 o" w8 ?# M        .dev = {" X7 s% C) J  w6 B. N3 x- i
                .platform_data = &da850_evm_tl_leds_pdata,( V( K& w" f- M. Y$ c
                .release = led_dev_release,# W2 b9 x& m* g) O/ j
        }1 X/ Z: F1 ]8 K7 |7 B
};2 Q/ n* J+ U& Q6 [. s( e! ]' o

6 Q. l3 {- u" `5 ?' @$ gstatic int __init led_platform_init(void)
" }3 f$ S6 p6 O3 x- q{1 O+ Z3 r) i* e: ?
        int ret;' A: f% y7 U6 u7 f6 i
#if 0
/ e5 ^7 d/ ]2 l% W# L        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
$ i# O: b9 ^4 `5 @$ B4 N- q7 J        if (ret)3 V/ p& t, ?1 {( j9 H: j7 ]7 P
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"0 w+ U2 H. [! V( F# R7 v% D% q' \
                                "%d\n", ret);7 V% t( y( u+ t% w; M3 n. D6 {$ `! `
#endif
; O- V! l) m3 a! M. m( W        ret = platform_device_register(&da850_evm_tl_leds_device);
, C6 K* z0 x, C3 C* j2 o8 ^' O/ U5 \        if (ret)$ v& C: L: l: a* f2 {
                pr_warning("Could not register som GPIO expander LEDS");; I6 G& l7 y7 k5 u, _; ?+ f$ u
        else
# Z1 z; N. q. |* i. j( R+ g0 H( f                printk(KERN_INFO "LED register sucessful!\n");
5 j9 Y, q1 \. l7 v1 Z0 w- L( |4 ]+ f* r6 ^: x( x
        return ret;1 A% _2 x8 m" f6 R
}  T; v, p3 r2 F- |8 P. Z
/ Q  n( K3 _. h+ k* K1 f( V
static void __exit led_platform_exit(void)
5 e. K; G* m: A7 w- G{( P0 w3 d; g' [+ Q2 @. h
        platform_device_unregister(&da850_evm_tl_leds_device);
1 ?* e& q0 N) O3 q1 s, b
& @; ]& k$ j3 }+ i4 e: Z        printk(KERN_INFO "LED unregister!\n");' H& e/ t# s- Q& A, U
}
+ V0 H+ A* j" I; p- s0 P0 |  n3 \0 `5 h; v7 O
module_init(led_platform_init);3 d2 Q" ~7 t' q, Y! y* v( O
module_exit(led_platform_exit);1 v" n, X) n% N5 u( d4 ^, G  e

& T  |8 R% i( F  i- D& X+ C" IMODULE_DESCRIPTION("Led platform driver");/ S' z$ u. Z' _
MODULE_AUTHOR("Tronlong");, a9 \6 o. D0 u( s
MODULE_LICENSE("GPL");& h  y# N! K$ T6 B
- r& ~- g5 u' m" ^& M- B& `/ @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 01:30 , Processed in 0.038925 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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