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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
3 j) l6 v+ }0 V4 ]: H- `#include <linux/init.h>
& f8 [& t2 W# ?0 h# c7 U% _#include <linux/module.h>
& l3 Q' E0 ^, F- L# ?- C#include <linux/kernel.h>; D9 d6 Z8 N) e$ [8 m
#include <linux/types.h>
( A. @5 O3 T- F- `#include <linux/gpio.h>
, @; n5 j7 u4 @5 w3 K( {: L- X#include <linux/leds.h>
/ S* }& E3 d! F8 M- ~5 t#include <linux/platform_device.h>
) I8 a/ P3 F% u3 h8 y, T. D+ ]: L
#include <asm/mach-types.h>
6 [. g( @, U' _- p#include <asm/mach/arch.h>
/ n0 T1 Y: f0 C/ d! N#include <mach/da8xx.h>& u$ a, T4 C8 I7 g+ G
#include <mach/mux.h>9 }9 G5 K2 v1 _6 H" ?

8 H- L/ K2 h; h& Y4 {#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)/ N  |. D; O: u. C
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
5 C) E$ u- e) Y* a3 m#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
% D4 a! Q! T% Q#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
" i% p4 p! N! l6 z
$ Q9 U9 }6 r5 u. Y: Y5 W/* assign the tl som board LED-GPIOs*/# G8 n8 c" s  Y9 n! c( L
static const short da850_evm_tl_user_led_pins[] = {1 F! Z4 o; Z. G$ X6 x
        /* These pins are definition at <mach/mux.h> file */
% M4 ~& Q* z# ^7 ?3 b        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,( `" n7 _, p5 T" \, {1 P1 o+ \
        -1+ s0 j1 m/ J4 I. B# F
};
  v  z! i: l3 n0 P1 c/ o0 M7 N, r; C. Q' I' r( U
static struct gpio_led da850_evm_tl_leds[] = {
. q  t# u& P  {1 k) m- p; O        {
6 j* v% o0 w9 d% N6 P. [1 W                .active_low = 0,5 q1 K% L, p+ X
                .gpio = DA850_USER_LED0,
5 @6 v& _, b; v1 {: ?                .name = "user_led0",- Z: K" u) O2 j& P0 U" r0 U
                .default_trigger = "default-on",( @) i& o6 d& m1 R
        },4 S$ f: r; `7 e, k
        {+ h- {1 d) @8 P, W1 p1 ]) O
                .active_low = 0,( v( A& u: c& I. {3 G/ r- ~
                .gpio = DA850_USER_LED1,
3 H+ ?6 {) S9 X$ |" P' w                .name = "user_led1",% N. K2 }/ e, N
                .default_trigger = "default-on",: Z' f+ ?3 Y# r" A
        },6 l8 [- E- p4 D
        {
, o. D6 t  a/ q. t' g+ I                .active_low = 0,
- {1 @& S, e! c' S                .gpio = DA850_USER_LED2,7 C0 S! j8 ~8 L0 ?/ j9 X! k$ Z
                .name = "user_led2",8 B: }* u5 c4 ?6 F6 `" N
                .default_trigger = "default-on",
& X0 P0 @% r+ H# l7 R( _% ^        },
" T0 i' y! W4 s        {5 w( V: a5 c+ l0 ]' f, U. D9 J
                .active_low = 0,' \: ~; h4 T4 d" w& m& j
                .gpio = DA850_USER_LED3,$ c& m' c& z; i( K2 R: D
                .name = "user_led3",# Q% @& l+ n; G) T# S8 b. j
                .default_trigger = "default-on",# _/ I7 k& b) F: V9 [+ G
        },
, N8 X2 Z1 g. [! }" w4 F3 S};
# x  E' H: i) l' z' h/ `
' T5 o8 ~2 T/ S: s1 M1 Ostatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
0 |3 M) ^0 S8 d; J- X7 O% x9 B        .leds = da850_evm_tl_leds,
2 j" [( N& g" q8 m7 B5 M: c        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),+ g" d% P3 Q) M5 i
};' G4 N& C* J0 U, c- g) K

" C. O) P1 s) R. z" k0 i0 Gstatic void led_dev_release(struct device *dev)
) E. O3 ^6 x- C4 K4 v1 U{$ T+ [2 B: I; ~! y% {+ M; u
};5 e# Q0 P& L, [# o2 \0 I$ }% Z7 P

9 l% T% j) p7 _: s9 Q: y; h! mstatic struct platform_device da850_evm_tl_leds_device = {! g  |& F! ^  y
        .name                = "leds-gpio",
9 z- r' k$ ]. {        .id                = 1,
, s/ ?' F  Z& c! b        .dev = {) T* d* T$ ]' k
                .platform_data = &da850_evm_tl_leds_pdata,
9 x7 \/ g2 Q1 h3 J9 g/ V1 U+ n7 S                .release = led_dev_release,
: O' Q6 n- o0 R2 E% X2 W7 _        }
# k, G: ?- u3 v1 E};2 Z1 ?% m( z5 M& u7 E! l2 M4 ?* e6 ]
' Y+ c- ~8 g$ Z( y
static int __init led_platform_init(void)
& Q% h4 X- U8 K6 x" ^{
3 B' c" ^+ D7 X6 u! b' f( _        int ret;
8 R2 T" I4 e2 r7 T#if 0
- c* o; F* W) c9 F! m9 [        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);- }" b0 d; y% L/ x! \
        if (ret)4 W7 Q! L4 B$ b- g8 _7 \6 Y8 X8 N9 Z
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
& p3 d9 m1 B& G! M% B                                "%d\n", ret);, [7 y' \! m, y+ J
#endif
. [. h/ V+ x( [        ret = platform_device_register(&da850_evm_tl_leds_device);
# C' V% E* t) ^: K! M. R: Z  L        if (ret)
7 m" A* G5 v& @3 i  x/ C                pr_warning("Could not register som GPIO expander LEDS");
6 S: B! w% I# ^3 c        else
. Q4 Y! j, s: c6 M3 G7 c7 P                printk(KERN_INFO "LED register sucessful!\n");
! K& Y1 P+ J- n6 p8 h9 p
- T7 ~; g& u2 a7 K5 |        return ret;
$ N. w/ ~3 r  g0 s}
; R' X' K7 h7 x) I/ z$ R, X. n8 y% j% B5 N! S
static void __exit led_platform_exit(void)) Z/ Q; N( I8 \& G
{
3 {; j3 s6 w' u- E, [, |/ [: d        platform_device_unregister(&da850_evm_tl_leds_device);
! I* K0 [6 T; Y9 j: l  d8 g
- y) {8 d# _' W2 b, U3 v" o4 s# H        printk(KERN_INFO "LED unregister!\n");! x2 G1 ]* ^9 [
}  t) h: ~# t5 H* `% {
$ X( n$ V1 A/ v$ y7 B' C% w# q- ]
module_init(led_platform_init);
. m/ D7 U  g; ]& x* _: F# L6 Omodule_exit(led_platform_exit);  \. z! F5 A& N: g$ W5 C' T; j
7 u, s- R4 s/ _! R( }
MODULE_DESCRIPTION("Led platform driver");. S$ C* _$ _, B3 t! ~4 `  F8 X
MODULE_AUTHOR("Tronlong");/ o+ n: L/ b8 g' Z4 t
MODULE_LICENSE("GPL");0 D0 p: h( W5 O5 {2 o5 V; e; l  s
) C1 B  n1 U) {: y3 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-28 00:27 , Processed in 0.039036 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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