程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
; G* H5 z8 l% v5 t8 F2 X% R' n+ |7 g- p#include <linux/init.h>
9 Z! v6 d# G1 `7 x/ t' e#include <linux/module.h>7 S- Q' |7 e, E  z1 d
#include <linux/kernel.h>
& V! V# W3 p5 g8 w% z+ N3 R; u#include <linux/types.h>
& m/ b2 q/ ?! y3 F3 H" O#include <linux/gpio.h>4 Y, L1 n* m3 t. S# e# n- R
#include <linux/leds.h>5 d+ \+ U+ t, J& `
#include <linux/platform_device.h>1 z) P3 O% w, U5 x/ F1 k
) a. e- f+ x, f' ?* X: |, ]  _
#include <asm/mach-types.h>
' L0 V; T; H* t3 I# e* T#include <asm/mach/arch.h>
) o' B: W. r' C$ X* Y$ Q#include <mach/da8xx.h>
" J% x8 a) D" d#include <mach/mux.h>
+ D- r; J3 ], {; }: m4 I# {# |8 P9 o
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
: m: n' B3 ~* J8 U* Y1 T# I#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)0 C  \. v8 E! Z/ u& D, X6 W4 U
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* c6 q. @& P4 N2 C- C/ y3 G" F#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)+ @) v2 @+ K! M& a- P( Q
) t3 C# n$ F: S# I- w2 \
/* assign the tl som board LED-GPIOs*/: Y4 i% y- h: _% b9 a: [3 K9 X
static const short da850_evm_tl_user_led_pins[] = {
+ D3 Q% C" K, z3 K) @. S' E        /* These pins are definition at <mach/mux.h> file */! m5 N* k: H7 o) p: g! k) l% u
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,' ?7 a$ o2 v/ Q3 v3 v! l/ v! j
        -1/ k6 K) w' S8 s) X/ ?
};& ~% s2 M: B9 g, s  o, @
: F9 Q' T( E% p
static struct gpio_led da850_evm_tl_leds[] = {  G8 P5 ]) z! B1 h
        {
0 }* E: Y3 ?$ s" X( \. I! }                .active_low = 0,# S, {( F( a7 k+ ~, v5 ^6 J
                .gpio = DA850_USER_LED0,
* H7 m& P( ^) \' Z+ A/ ^$ ~                .name = "user_led0",' T. H% O. }! _
                .default_trigger = "default-on",
. X3 N2 D0 ^2 ]( M: C' |4 b5 U! Y        },
( b, N5 d1 r! |* u3 [: j        {
  ^2 E$ j4 x" x  g/ K, I4 H  {1 l                .active_low = 0,
/ k$ v9 q* }! V! M1 {                .gpio = DA850_USER_LED1,
0 G7 v. k# e) r% H# K) g* e5 o                .name = "user_led1"," S' p4 O$ K2 ^2 k# m& P! Q4 C
                .default_trigger = "default-on",
  p+ X$ _3 \0 l( d2 p0 Z$ W0 g        },6 C  Q1 g6 D* b3 P7 T) l
        {
6 O2 q6 E8 v, K                .active_low = 0,7 ?1 m9 F* G/ l# _; p
                .gpio = DA850_USER_LED2,
% _6 y. l( I. E7 G% Z                .name = "user_led2",
0 i6 i& t9 o) ], O3 k4 s9 b8 n                .default_trigger = "default-on",; Z: T* G1 m2 z* _% J* T: a. D/ t* s
        },. i  z6 e) X! y5 S, K" T
        {
1 g5 }. \  S3 L9 ^" `                .active_low = 0,8 ]0 G& w+ q" e4 j3 Z% u2 T. A
                .gpio = DA850_USER_LED3,
/ a7 C+ _9 @% _* o                .name = "user_led3",* |: V, F1 I/ I! D! y
                .default_trigger = "default-on",4 g. l4 Y; y6 J- M; u1 w) f
        },4 U, a- x/ A% _
};; L) j3 g$ F7 [

7 i3 ?1 H6 S! o3 z, N$ @static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {+ r$ _1 @' v, h! E- V2 P
        .leds = da850_evm_tl_leds," I; k4 b" h7 G, X6 P, b
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),& A: ?% _# t6 q) Q6 e7 A
};
% S. P% C' g& a( |8 q+ U+ t6 s( V4 k- N# c0 }( F! E- l& O
static void led_dev_release(struct device *dev)
3 `& G' L' v/ J  v  J9 e{
; z* z  Q: Y2 g7 H1 n1 V+ w; @};
) `, ]9 Z' N6 ]2 D) D
# I# u2 `8 o( g6 H: w4 D: _, b( Dstatic struct platform_device da850_evm_tl_leds_device = {. @+ D5 z) N; P0 b6 u6 V: o; X# w
        .name                = "leds-gpio",
  g- O, q1 J( H" e+ U        .id                = 1,. J$ L5 |7 K, ?7 f, }, G8 `( D
        .dev = {* J* _/ `6 w$ ^: n1 M  ]+ R
                .platform_data = &da850_evm_tl_leds_pdata,
6 ^. x: x! w+ J7 ~* r% ^% h4 |                .release = led_dev_release,$ ]8 `3 U, }9 K( P  o% @: c, [
        }
2 {- P8 M8 T; Z) c' \% w};
' N/ `6 L$ J8 E( o9 o0 z& ~: t( l. I1 S! n/ M0 m
static int __init led_platform_init(void)* ]3 i$ h* s1 g. \! @& D5 z3 _7 g% a0 q4 Y4 z
{5 o- A# G4 b( x* `! P. }2 E
        int ret;2 A: U9 O' ?- V! A3 S2 v% ]) M
#if 0
( A6 u7 ?9 N7 [; z  Q/ ?        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);; j8 d  e: N; A; T' R
        if (ret)! d/ S6 e9 z: x. Q: V1 l
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 W) O# O+ I5 e+ ]/ o( t
                                "%d\n", ret);
6 i( K% A+ i1 b8 }, l4 H! m0 W#endif# E6 {) \% K) ]8 Z" u; s
        ret = platform_device_register(&da850_evm_tl_leds_device);
* E; X0 B! @! l, C6 h, s' u        if (ret)
( X; ^) c5 e9 F# u6 P% `                pr_warning("Could not register som GPIO expander LEDS");: P  d2 V" ?7 _
        else
' j$ e) }2 c' S4 {: Z                printk(KERN_INFO "LED register sucessful!\n");7 d8 h+ Y7 R6 Y, Y. p
: T8 `  ~( F4 v/ U' G) j/ S
        return ret;& B  f5 s9 j) ?/ z1 x
}
; M0 C7 u  D0 W% U& }
8 @8 `4 V5 |) u& d! Z- j6 kstatic void __exit led_platform_exit(void)0 R  x, L3 W4 X
{
) x7 c7 R( K: Y- h5 s8 P5 I        platform_device_unregister(&da850_evm_tl_leds_device);
4 z: o/ @7 h. q1 W% d5 T) A, J7 V& k1 b
        printk(KERN_INFO "LED unregister!\n");
) Q% S" z" ]5 l0 w4 E}, Z6 F% k* {) C; j* e5 B6 T8 c2 w
: ^8 D3 d3 z, a5 ~! t
module_init(led_platform_init);
- V& p+ D- l! j: i1 X' pmodule_exit(led_platform_exit);+ J9 ?& E& [8 J0 @$ }

' p# S- N; ?$ X% F& kMODULE_DESCRIPTION("Led platform driver");
* P+ e: D' }8 ?3 X! x9 a* ]2 x2 bMODULE_AUTHOR("Tronlong");
- _  K: m4 G" L; N# ^MODULE_LICENSE("GPL");( t) V( Z; \- i: Z5 }- `, D/ U" Q& g

0 ?# V# q/ B' [& P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 23:16 , Processed in 0.037576 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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