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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。3 d  v' @2 p1 f) Z6 }( r
#include <linux/init.h>5 t2 H( F1 G! q2 k2 f( R
#include <linux/module.h>
2 I# Z. {8 l6 A' x9 t5 D2 U# ]% j" S#include <linux/kernel.h>
9 L3 n* d" B' [/ o* e/ _#include <linux/types.h>4 \) ?% Z1 l- @4 `
#include <linux/gpio.h>
! I, i" L  g( u2 T& I#include <linux/leds.h>
. S+ E* Z- L7 o! x: _! j#include <linux/platform_device.h>9 T4 O: b" t0 P& G6 u' ~; ~" ~

/ f+ k: q, |+ r% g, f! C- Y; I#include <asm/mach-types.h>
4 P- c% B3 E6 X7 F/ q0 H* q, B! g#include <asm/mach/arch.h>
* Z1 O7 @  d5 d- p1 O# e5 q#include <mach/da8xx.h>8 l& @/ M6 ]9 J; i* E6 i! P& C
#include <mach/mux.h>
. e8 r* H9 V! b6 D& a% D3 }# y: d
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)  y' N7 e2 A+ _9 P
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)# F) z- x% [! q! D/ l# o
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)( a, A6 G# j2 N3 S' q( y
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)5 T( B( O2 C& B

1 ]# w2 H. J( w- y9 R+ X/* assign the tl som board LED-GPIOs*/. O& P4 }% }+ S: |
static const short da850_evm_tl_user_led_pins[] = {+ o$ x0 r- X0 ?0 j* w
        /* These pins are definition at <mach/mux.h> file */
( p6 u; q& D( B3 X& y        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,% F8 |( p6 i: V9 n: e4 @2 ~
        -19 O' b9 l* W+ Y/ X- A
};
  ]# o* w2 T6 @3 E# u! P) A; _& J( f. z
static struct gpio_led da850_evm_tl_leds[] = {& ^9 q  Q8 o6 i
        {
) k2 l' E8 E( z2 c7 J( a" B( b8 y! i                .active_low = 0,; `5 x' S: Z1 E" Q+ n; [
                .gpio = DA850_USER_LED0,
' i7 ]2 R' J& u' P/ u, ]                .name = "user_led0",
' H1 M9 o9 |, r  ]: C6 q. u( j5 n                .default_trigger = "default-on",
# x- I1 O" O: T  H, U        },2 l* c2 k5 E. p- e, @
        {) D+ I- n# r4 C* L0 j4 ^! H
                .active_low = 0,
. _' M+ m2 z7 c' A) Q* I                .gpio = DA850_USER_LED1,& i; Z1 c5 n6 X  I5 ^& S, ]9 S$ W. }
                .name = "user_led1",9 U+ k2 ]: e( o' L+ Q
                .default_trigger = "default-on",
1 [2 E* {  `9 p6 E4 K3 j3 ~        },
2 X; J; ~, S* B0 M( R        {3 E4 p1 x5 V7 W1 I$ D* {/ G: @
                .active_low = 0,
* ]7 t( h# H' x+ T' d* Y: s3 s. r                .gpio = DA850_USER_LED2,
! Q1 a3 N' F1 n6 j( J: V# }                .name = "user_led2",
* E# J& J9 q& s; s                .default_trigger = "default-on",3 ]. ]- @1 d. U6 Q- j$ K
        },
/ u& q+ G+ x- N        {
# H: Z! X2 ^* q9 n                .active_low = 0,
3 ?* l0 ]  F/ Q& k+ T; k& _: x. G                .gpio = DA850_USER_LED3,: A) X' }5 W: D
                .name = "user_led3",
3 z# n1 t; T$ d+ V7 I                .default_trigger = "default-on",
; ?/ p6 Y! x" l4 `6 r3 S& j        },
" ?* D1 {1 X9 ]* q6 y5 u/ ]3 ?* r2 @};1 e3 o# Q1 ?4 X# n

' h& S  D0 i$ g% k: i$ l: ]/ }/ tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {8 g/ b+ v& a0 n& O" |6 Y% v
        .leds = da850_evm_tl_leds,# S0 N( v0 I0 @* |6 T
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),1 X2 `: x8 g( W
};2 u, c( c% M# r% `8 \5 Y
- C5 q) A# P, E& h
static void led_dev_release(struct device *dev)
3 S/ s( A% `, p{
" m: p4 `: f" ?9 w5 t& F9 k7 z};% O$ o+ K  d; v. a, v' c8 m% `; N

+ ^: j- ~. {( F7 w; lstatic struct platform_device da850_evm_tl_leds_device = {4 s5 F5 q1 _7 C' s' c
        .name                = "leds-gpio",. k; k* M, U% F  t( ^& u; u
        .id                = 1,
, d7 G; z. v1 O7 }        .dev = {8 ?7 f! z" A* F: C  O6 d
                .platform_data = &da850_evm_tl_leds_pdata,
% p3 K: q3 [* W4 A1 a( E5 W                .release = led_dev_release,6 N1 r. y9 p* o
        }
, w& X3 P8 d* [! D! {};. @! [  ]8 K1 U1 _' g) q6 q

. J/ C$ G3 o6 a+ [  [) J. ?static int __init led_platform_init(void)
/ q* g9 E- l9 F3 w" l1 c  c{) P# `* h; o/ a6 L0 @4 K5 R
        int ret;
! _+ u) H& [* s0 J#if 0
6 [$ N2 e$ b: U4 _  T) K        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
( f5 u, c/ A3 `3 {        if (ret)
# a; O3 c' a" Z1 c0 G& j                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
7 K: H3 k. v  q                                "%d\n", ret);) u9 ^. _; U( i  M) O/ m% Y2 q6 E
#endif
8 b! s/ I- f4 |        ret = platform_device_register(&da850_evm_tl_leds_device);
! }. q! j& x) r: f/ V) P. m        if (ret)
; }; }, L) @4 l% W                pr_warning("Could not register som GPIO expander LEDS");
8 E  g2 y2 ?+ Q        else
, }3 U5 @+ d+ E' A1 m6 A4 f3 ]                printk(KERN_INFO "LED register sucessful!\n");9 d' `  }# A7 p7 a9 H$ c0 F
4 ]8 Q6 I. z; k0 t8 d; H6 u' z
        return ret;  g& [& w6 y- w. u7 z- F2 E1 h
}* w9 R( _; @0 ^+ g/ @, P# I

8 U; O4 {& Q; r9 _static void __exit led_platform_exit(void)! |2 I! g8 n6 m0 o3 H5 v
{5 M1 c& x' C% R1 |3 Q
        platform_device_unregister(&da850_evm_tl_leds_device);
% S0 Q. y1 W% {7 v! R. F4 g2 {5 t; o0 f$ r9 V
        printk(KERN_INFO "LED unregister!\n");- \" r0 I) P- [$ w
}
! N$ L, i; _( b+ q
% p: ^( i, G- ?module_init(led_platform_init);$ G& e# A( k- y. v
module_exit(led_platform_exit);
3 ?# o4 x/ a* y: B
5 T" ~9 {- v7 R. z' U9 [MODULE_DESCRIPTION("Led platform driver");
$ @8 D" X6 [* e; t9 J- [MODULE_AUTHOR("Tronlong");
9 b6 {* d1 u$ a* q, d+ p3 vMODULE_LICENSE("GPL");' v$ w. }0 R, n! y- P

& m7 T4 d0 e1 j' d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 03:33 , Processed in 0.040442 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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