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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。2 k# t! K6 p( |, t
#include <linux/init.h>! P! P1 S% t: l7 K
#include <linux/module.h>
1 s+ X' k4 b$ T- m#include <linux/kernel.h>% r7 k6 t9 `6 `) I+ g: Y
#include <linux/types.h>
! U5 o: E( e3 v5 [7 C#include <linux/gpio.h>0 B) [6 Z& [+ Q  q7 k1 @9 R# \2 H
#include <linux/leds.h>
" ~5 i  Q, H, L5 d9 `* S" ~- p#include <linux/platform_device.h># i7 d2 d* C$ m
. U' U4 J, S: z. u2 H
#include <asm/mach-types.h>
* }/ T/ _) ?' U) G% w- L1 n#include <asm/mach/arch.h>
: X) H5 G  i, N( |. i5 B2 R% ?#include <mach/da8xx.h>
: B1 B, H+ F& q* A: V. H; [#include <mach/mux.h>
9 k# U* Y: t- k9 G. R6 z+ ^3 F) z; M1 p* M8 _3 A8 R3 y
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
0 X3 e/ N5 m! K3 i9 I: g8 R: ]#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
$ F. \6 \8 G- n- N) Y" m3 _#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
  w2 B) L; h2 Z6 O5 V. }2 _+ w  p#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
, U' d6 M# o  e; A; X2 Q
8 b( H, I; }: J: }/* assign the tl som board LED-GPIOs*/
6 Z9 Z% X: q/ G+ ]: g( f1 g& `" r  Gstatic const short da850_evm_tl_user_led_pins[] = {
8 k; P; Q$ b( h: h8 V3 N" [        /* These pins are definition at <mach/mux.h> file */# J. a4 U" k- B+ S& |# t
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
; A' G) H7 C+ i4 i/ ?        -1
6 p6 o4 p% a; v1 Q" Q) g1 f};0 i% c* s' q& M$ p) m) z* L
, {( n% B9 @! J* G% L# _5 G0 ], J) x2 A
static struct gpio_led da850_evm_tl_leds[] = {
- W4 y" G6 M; \' e) S+ q1 K1 n0 G        {
# Y8 V3 \5 m+ u% w/ _                .active_low = 0,
  X3 C( v# r, N8 s2 d( E                .gpio = DA850_USER_LED0,: P" ?8 `9 ^* m
                .name = "user_led0",0 ~3 K5 Z7 d# N! A1 @8 @  w: y: c
                .default_trigger = "default-on",
+ t0 M, j- i/ {8 f9 f5 \7 s3 Z        },, e# f9 N! ~- x" W9 Y& @
        {
2 Y5 S9 F6 d5 z4 c1 Z& M                .active_low = 0,$ y& b, L5 u6 E( C4 ^" N
                .gpio = DA850_USER_LED1,
4 L9 C3 `) h7 R% R" S; F# S                .name = "user_led1",& f( s: x& f- w: \
                .default_trigger = "default-on",- ]8 n" U6 g, ~% q& x' C3 v
        },
+ i3 [' \5 ^/ Y5 H. I, u        {' u; ^8 o" F8 ~# g
                .active_low = 0,
3 A7 j1 K( w, R+ p7 A0 \" S0 z                .gpio = DA850_USER_LED2,3 R0 \3 k" q/ n, q' O) p& I- l0 u
                .name = "user_led2",2 m1 a1 y* E: Z! t* J
                .default_trigger = "default-on",
, f/ ~5 q- r- b9 k        },+ y% t" |; x1 Y
        {
0 E# e2 i" V/ `# E7 }3 ^. j; i1 ^                .active_low = 0,
: Y4 L6 s3 I( V+ |1 j5 |8 V) u                .gpio = DA850_USER_LED3,$ T# s5 p6 N  v: M
                .name = "user_led3",; h. I, W4 J7 o7 _+ G' [, L
                .default_trigger = "default-on",6 o, N% o  c* ]" S& R+ V
        },
5 b$ }) ]1 P! N! h7 M) `};  `- C5 z6 @+ G5 o: s+ w& y
9 _4 C7 D6 s( f0 A% r
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {* a: C% @: I6 v# ^
        .leds = da850_evm_tl_leds,1 e( ^9 Z  |" T- q1 g4 G
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
0 B! ^+ W) z. k3 r};2 x( w: @3 ~/ W  m: l: N6 ~

2 F* H9 Z0 s, b, j2 ]8 Tstatic void led_dev_release(struct device *dev)
3 V! G/ b: u: ?, v& ~1 n{
) y! F& s" O6 u7 t' v, n( O5 g" U};
' n' A  i1 S8 w6 L6 h% R, n
0 r3 F% I- z+ V( j- ]$ lstatic struct platform_device da850_evm_tl_leds_device = {
4 n. w, G  N& V- K. V, Y        .name                = "leds-gpio",+ H" z9 b3 A- `4 ?5 i* q
        .id                = 1,
* R3 ~6 P6 p$ j  b# L        .dev = {
7 K1 h& m+ R' P, j) N4 \  _                .platform_data = &da850_evm_tl_leds_pdata,
9 }: K* ]( A3 n                .release = led_dev_release,
" E; g+ n# o) B% B% d  ]0 L% p        }
5 b. M* R4 q, H# k6 J% z};# r9 Z0 M  T6 d5 c2 F# Q( \
/ c5 J; a; {; E9 W4 S
static int __init led_platform_init(void)
6 l, y& k* P8 E{+ ^. _2 N. f' v; `
        int ret;: z2 B: B  L0 S" }' ]) _9 Y
#if 0, e& ^6 Q4 G5 Z9 H: U1 |
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);. v' f1 o- H8 `! j4 p1 {; q4 y" `
        if (ret)) X0 a8 P7 I' O2 J6 V% Z
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
& V% L! [- o& t/ Z; T                                "%d\n", ret);
3 _: P; N" O3 t. O' f#endif6 h3 M! B+ M$ H/ i" h4 |( N
        ret = platform_device_register(&da850_evm_tl_leds_device);
" @2 C4 {$ U  {6 i1 M4 H9 i        if (ret)" J5 F# T; L7 S7 J
                pr_warning("Could not register som GPIO expander LEDS");
) T) v" b3 M" a0 L* F3 n. z( h        else
7 k4 H' B, m# d1 p                printk(KERN_INFO "LED register sucessful!\n");
; a. Z) Q# u2 C, Z
- i% _9 K# B3 x+ z' m' j1 o        return ret;6 E5 V& d( h% ~/ i
}
( s4 G) t" G+ E, d4 P3 Q' t* @6 ^2 i" [% F( g: E9 H1 Q/ v* ^$ l8 z
static void __exit led_platform_exit(void)
/ S: B8 J. Q# F2 W{1 c* q8 p8 @  l, _$ P
        platform_device_unregister(&da850_evm_tl_leds_device);1 o/ F+ W, P. ?9 Z; W8 P' c

* O) H9 x+ Q! j8 u        printk(KERN_INFO "LED unregister!\n");9 a$ b) `) C6 B2 I. ^7 W: e: H
}( Z( ^1 ^7 @- {4 C0 [( G# C
# n! X' E6 S. d" |
module_init(led_platform_init);! i* Q$ m9 A/ D" ~8 E
module_exit(led_platform_exit);$ w9 I  L3 ~& l  S

3 F: w! N" G* u- O, u; ^% x' {* CMODULE_DESCRIPTION("Led platform driver");
0 z0 N. Z& X1 x& p) R5 G# wMODULE_AUTHOR("Tronlong");
1 x  S  F- D8 R6 F: A! {MODULE_LICENSE("GPL");, Y: J- r+ t, f9 }$ }, e. k8 n7 G

( @0 _. k* Z3 n& C, r% \7 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 01:13 , Processed in 0.061161 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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