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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。" b5 V4 W; W! s) K
#include <linux/init.h>
4 N3 D/ l* b2 x" n6 A3 L- L! M1 j#include <linux/module.h>
6 y1 n) c) g! Q: w3 L# _# M8 X#include <linux/kernel.h>
* o& n. Q' G; @- ^' i. w; f#include <linux/types.h>; r( Q9 j1 U6 U/ P2 t  ~1 ^& T- m
#include <linux/gpio.h>
5 C. @+ |. s! Y) h0 w) e9 L#include <linux/leds.h>
0 {% k8 E9 j0 Z0 O/ I7 d0 j. N9 w8 k#include <linux/platform_device.h>7 D" R" c, Z) k3 V

& v7 y- V* A9 t# s0 K! ?#include <asm/mach-types.h>2 j# Q* n! n9 K5 {1 E# d
#include <asm/mach/arch.h>. K8 T4 w& ]( f5 d7 T0 t) F1 M4 X
#include <mach/da8xx.h>
. \, X/ z  w8 v#include <mach/mux.h>8 o; p) G/ y3 s4 [5 |' u$ l# E

) R  H9 ?4 m  |. Z4 z' m3 N1 U#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
5 S8 R& j: S. x2 d' f  J- h- }#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
1 J8 @5 G8 @( k$ u/ o( f7 J  M. L. }#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)& P0 Z3 c- P( ~0 y+ f
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
! H/ }7 A* p2 }0 ~7 j& ~8 l7 b; J. ]$ ?, {' ]
/* assign the tl som board LED-GPIOs*/
+ j7 M! F/ o) N1 v- M. i  dstatic const short da850_evm_tl_user_led_pins[] = {- V. N* Z( a: y' E, R
        /* These pins are definition at <mach/mux.h> file */+ I5 D9 E# }( F1 D
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,/ }& U" c' J+ v1 g$ y% _# v" v
        -1/ I% o' z8 s, B4 }0 M' C
};
% l9 x! V6 A+ I2 D) X1 T! o, Z- {; q  K9 `- U& C4 ^8 ]! ~" ~
static struct gpio_led da850_evm_tl_leds[] = {8 r) ^1 q% T, ?
        {
, p6 ?; ?# v8 L$ z$ C5 K( n, z                .active_low = 0,
6 c6 G1 c8 M: f& g                .gpio = DA850_USER_LED0,
6 a6 N# y4 `+ ]1 Y                .name = "user_led0",
7 B% [) X0 F; k( U# k4 G- H" j                .default_trigger = "default-on",3 }" `! l+ a1 o. Q: H* }( M! @
        },
* w" {+ ~9 V; u" ?  N        {
1 e' c  T1 v8 ^! t' I' ?" ~                .active_low = 0,
6 s' I5 Y% `/ G. U/ |                .gpio = DA850_USER_LED1,( K/ J6 Y. T; }0 m; W' |, I
                .name = "user_led1",
4 O- y) P7 b$ j& F! Q* r$ H6 D% z0 B                .default_trigger = "default-on"," d( m0 ?* K  x% \0 z
        },+ `' |% ^7 D# F
        {9 f/ }% R5 _( l. D: R
                .active_low = 0,  n3 {4 {8 \( W, e( ^
                .gpio = DA850_USER_LED2,- j2 ~. Z2 b# i
                .name = "user_led2",4 W( U2 e1 P* P6 R8 t
                .default_trigger = "default-on",
( O% r6 C) v& {# t6 W: U* W        },
9 b+ c0 z2 t/ Y0 f( Z( c- j) k        {
. l. A2 r7 g1 H1 \* s7 I! `                .active_low = 0,( G( W% C$ ?& {( t% I0 b. `7 B
                .gpio = DA850_USER_LED3,$ R0 G% E' M: U1 C" B! q* A; R/ X0 J% b
                .name = "user_led3",
1 |" j0 c. e8 U$ d' U$ T                .default_trigger = "default-on",
! T2 W' f* p" C1 C$ m% l        },1 \) m" Q' E; n( g0 Z1 Y/ c+ V
};
) x* ?/ _' Z" z" `7 d$ A  _2 X# u  i
( B( R6 b& i: H' u' f! Lstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {5 d- U' A' F$ V4 {
        .leds = da850_evm_tl_leds,, V: P% H6 m$ B
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
/ K9 j1 K6 _1 S3 w};5 T5 x/ L" @  D* o; B

0 O$ E3 Y0 T1 V+ J2 Estatic void led_dev_release(struct device *dev)
( ?0 C, [8 j+ r5 k. P) M{7 N; k- p! y& s, z( Z* c
};
5 A6 {& i# e4 P: _/ u! V  J+ ~" @6 t; h1 g) [9 `: k' b
static struct platform_device da850_evm_tl_leds_device = {
7 U) _4 F  T4 B6 k2 B1 f' T2 l        .name                = "leds-gpio",4 q6 m3 W7 D1 f$ k, F+ C
        .id                = 1,% j9 u! l; i$ x$ k; c
        .dev = {1 z/ u9 J5 G. A3 q* o& p
                .platform_data = &da850_evm_tl_leds_pdata,5 z/ X. v' Y0 c8 U7 ]/ O5 j
                .release = led_dev_release,
+ Y9 l" G. M7 P        }
" h. y9 z. Y4 M+ ^. x' ^/ S+ o};0 |9 V$ e0 }% o. Z
! B( y  ?0 x  S; W4 R, t. W3 X' k/ A
static int __init led_platform_init(void)
% |4 i* w! ^# w$ |: K2 r{  ^+ }6 c  ~2 U' z: x  t
        int ret;+ `) d7 ]- v3 V* P3 O0 m
#if 05 ^/ b" i  q! I  d% N
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);, |- i) M- o1 m
        if (ret)0 j/ n5 H8 q' U: k
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
2 H# i; i8 \5 M/ Y* n                                "%d\n", ret);0 O# f1 p3 ]8 Z3 W! ]# _
#endif
6 E# v2 b7 C* }9 ^  A; F1 X5 a        ret = platform_device_register(&da850_evm_tl_leds_device);
0 |: u5 r  n2 \. z/ q, Y        if (ret). k' Z2 b: H9 f9 x1 Y9 S9 \, x
                pr_warning("Could not register som GPIO expander LEDS");3 M6 N: _! Q! N* o7 h
        else$ q# |  j) e+ T" X
                printk(KERN_INFO "LED register sucessful!\n");
( ~8 P$ K, b" W) j3 n1 r
. b, q2 }* h) \9 X. i- o: P        return ret;$ ^' u) z- p/ M+ t/ H
}( A5 O- z% l; _& P5 j9 f" \
: k. a9 u& ~6 O' s. M
static void __exit led_platform_exit(void)
& f# n; @& Z# Z6 H8 n! [{
; T1 d$ K- N& v/ l/ L$ s        platform_device_unregister(&da850_evm_tl_leds_device);  V8 w( r8 C" {8 j
( Q+ k- E/ k+ N. x+ L' R, h! \
        printk(KERN_INFO "LED unregister!\n");
8 n' v% E& O% y$ Z; G9 }}
8 Y/ O. E; {% e" Y
: y/ v0 t6 W/ ~1 t2 Bmodule_init(led_platform_init);
6 z6 c! D6 G3 Fmodule_exit(led_platform_exit);
( g& m3 _8 ?2 @5 C  H
; }% c  p: ^. p5 }MODULE_DESCRIPTION("Led platform driver");/ U1 c" Z* K3 w, V8 @4 i
MODULE_AUTHOR("Tronlong");
# J. J6 f0 E" E% d* T' PMODULE_LICENSE("GPL");
) f$ \6 ], c8 X  o
3 Y2 I$ ^! r& [% u2 l  D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-12 01:34 , Processed in 0.038564 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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