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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。; e, f' D& z! i: {. K% Z1 l3 t2 @
#include <linux/init.h>
, b1 n9 t# j/ }$ ^& j#include <linux/module.h>( C2 ~, A( A8 G/ a
#include <linux/kernel.h>
0 v2 F' L: e8 i% Q7 k" z% h, D0 Z#include <linux/types.h>
5 }; p! a1 Q9 B5 @! G4 Y#include <linux/gpio.h>5 E# f7 y5 S; ^
#include <linux/leds.h>
$ J6 z% ]) y# E' L7 \#include <linux/platform_device.h>2 l$ s5 ]% x2 n4 K9 U8 F# j8 a

3 n! l* f9 w2 B/ v; y#include <asm/mach-types.h>' S0 Z5 [3 S1 {" h
#include <asm/mach/arch.h>( ^/ \7 P3 R% E, h7 O* y
#include <mach/da8xx.h>
- _) r7 O8 p; K. H5 d* G" I* y#include <mach/mux.h>  I# d; Q2 B: @- V( Y$ W
  c) t  e; i; g1 m8 B4 @) b. f
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)4 b7 k6 O! |$ n
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
8 a6 w+ l: z: s# s5 e( z) ]$ V% B) Q#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)- m2 Y- y3 u6 V& _( p
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
5 ]4 v* X! W2 T: ?6 d8 K# N+ v& S5 w: I$ P: @: }3 F
/* assign the tl som board LED-GPIOs*/
: U) Y% O4 O; ]3 S5 y2 H1 ]7 l/ Q% Fstatic const short da850_evm_tl_user_led_pins[] = {
& f6 H1 _, f! T9 e        /* These pins are definition at <mach/mux.h> file */; j# j" b5 V0 A, t3 ]0 y
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
! I3 c1 G7 c- d# b        -1
4 D* [) p2 _4 [4 i' l5 f5 ^- X};
  R+ F* T) U4 g+ ~. X. q2 \& n% V; W+ R6 Q& z+ ^
static struct gpio_led da850_evm_tl_leds[] = {
+ c3 }: _% c4 Y        {
: X9 U! l' U. l                .active_low = 0,; ]' P% d2 d1 z( ^# j: j4 i& z
                .gpio = DA850_USER_LED0,
& v- x. K7 T, C6 A8 ?1 ~                .name = "user_led0",
) V5 n9 B" p! u                .default_trigger = "default-on",7 ^/ ?5 {5 `/ c- d9 |* u. E
        },$ d6 S: @2 a& B* G& {
        {
$ y# m5 b) G6 w# [1 j) ~" T                .active_low = 0,& f: S/ v, Z! w4 Y% T. J
                .gpio = DA850_USER_LED1,
4 S) T& c! o5 G  d& o1 n: Z                .name = "user_led1",! q$ p5 O! [; g, Z3 H6 U2 P0 N
                .default_trigger = "default-on",
$ x! y# y& l! a, w- O        },
* ~8 }; y& X) _" U: c, S% k        {# X' N8 i$ N, J8 W8 i
                .active_low = 0,1 {$ y( [+ x7 r) ^4 v/ ?0 u. a7 K. i
                .gpio = DA850_USER_LED2,  l6 |) ]5 ]  |* r# W: v( w
                .name = "user_led2",, l/ C* i' a. Y( K
                .default_trigger = "default-on",+ G9 f, T' ?% }' ^0 Q& z
        },0 F: k- Y2 r( c8 G
        {; I8 [- K5 t4 X( {
                .active_low = 0,
' Q0 H- E7 o9 k& {! d, E  ?5 F                .gpio = DA850_USER_LED3,
3 D: d6 p& _& s8 i' x/ a                .name = "user_led3",
# e1 D# D1 g+ z" G, z                .default_trigger = "default-on",4 t/ m$ ]1 Y! J+ y- e- p$ n+ a6 P
        },9 E5 U- X. q& H+ f
};
7 e8 Z4 w1 l( J3 m* u1 p$ r
# f: ~! m, P! B0 N: l* a6 a3 @static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
+ ^  c+ z- W* E( ^/ `        .leds = da850_evm_tl_leds,0 J$ t* r  x  D$ v
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),  {. g: R# h0 Y. O( Q  i! i5 {
};$ M9 v: [* C* w! c% |8 _! n0 z% }6 ?

4 O. Z3 h! C  l9 P3 u2 T/ Mstatic void led_dev_release(struct device *dev)
' o6 {' p+ T" ]( N! L/ {( T{8 d/ O6 y! x! c: A; E
};
. y* M2 w' M% y2 Q3 C9 a: w6 q) H5 j7 F3 ^, m0 E3 W) D7 Q
static struct platform_device da850_evm_tl_leds_device = {
6 Z% Y5 W7 R6 L% a4 @$ Z6 j- ~        .name                = "leds-gpio",* ^* v/ D0 \) T. a% i/ h
        .id                = 1,
6 M4 A; ~1 u$ H: q, S        .dev = {
3 t$ o1 R/ O8 q7 Q' V1 e                .platform_data = &da850_evm_tl_leds_pdata,+ `, [5 a5 @/ c3 t1 x! \4 x0 `
                .release = led_dev_release,
- A, p; D# W$ n3 R        }
! Y5 F) ]; ?* x$ [2 r7 a8 r};
  Z4 N) b/ p) u1 n! a$ d! W9 I' `8 G
* _3 {. W$ p* i% Xstatic int __init led_platform_init(void)
3 R9 }: z% G  c- B& |( c5 g{6 M1 \+ @0 h) z
        int ret;
( P; k) G" }( _# W7 p9 w1 l#if 0" w$ t, P; P: ]' @# W
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);7 ~' W& a: c! C, ~. I/ H, Y/ o
        if (ret)
. v: z2 s' x0 ^8 o& {3 Z% H                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
7 B& i& |* F  T  L. n                                "%d\n", ret);
) o( U* A% x  a) C#endif
# t$ _8 k# J6 N8 J! R- I        ret = platform_device_register(&da850_evm_tl_leds_device);
1 |/ ^) i/ ~3 i) P- e( R" e0 h7 F        if (ret)
! j& F* d3 C. ~: Q- O2 T+ H                pr_warning("Could not register som GPIO expander LEDS");
) x3 j1 e6 v& s6 ]! |: {        else0 ]( f5 d1 @" g* |( _: k# G
                printk(KERN_INFO "LED register sucessful!\n");9 j0 Z$ J5 l( C& G" Z" [/ \$ R! H5 H
9 Q3 I- z' o6 x5 ^. c
        return ret;
  q) ~, M# k0 |}% \% w( k0 F! R1 E

7 D9 p; c* p5 X0 f$ Jstatic void __exit led_platform_exit(void)$ K: O. Z; n; C& P- N/ o
{6 U* g& o0 _# P4 W0 U( I. ~$ D
        platform_device_unregister(&da850_evm_tl_leds_device);
! P4 M8 w4 Y' M0 `, {3 H! Q
9 X3 Z' `: J% B5 A        printk(KERN_INFO "LED unregister!\n");
8 `' S' f" p2 m5 l7 U}
+ D& _! r; r- g% F2 a8 }# i1 ?( p; @- u
module_init(led_platform_init);1 ]6 a4 d4 N8 V2 E9 h
module_exit(led_platform_exit);( e& B2 S: M1 v) Y" z) ^) Q

0 B+ `3 Y* C: \; G+ gMODULE_DESCRIPTION("Led platform driver");
- d) k" J8 v, o- {; ZMODULE_AUTHOR("Tronlong");
/ B! o/ E, D) d2 y' QMODULE_LICENSE("GPL");1 P0 `4 e. [  Z! b0 [5 b' u# e

5 D/ Q" y0 M* d' Z% ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 10:48 , Processed in 0.037837 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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