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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。5 ~6 e- u* ^) k" \
#include <linux/init.h>
( ?) [4 N) p- Z. d& C#include <linux/module.h>9 ~# \7 g4 L. t2 |) z0 d0 i. f
#include <linux/kernel.h>" [2 _; `. z7 Q/ _
#include <linux/types.h>
1 W5 A6 d5 x) I' p  S2 g#include <linux/gpio.h>
1 d1 N' \$ D2 N& @4 m8 g#include <linux/leds.h>
5 `9 B/ M4 K) i$ i( i" b0 l: ?#include <linux/platform_device.h>2 w" p: h. L" ^+ s$ n( m6 y. c2 k  b
$ U. f- n0 X# N& g
#include <asm/mach-types.h>
- P% l9 S' u4 x1 I& [# T8 T3 R: z#include <asm/mach/arch.h>
/ Y+ B, c" _/ {$ z8 w#include <mach/da8xx.h>' s4 y6 s5 W9 n6 a" x, c( ~( E
#include <mach/mux.h>
% {9 \$ t; ^4 h" T: J
# ]8 g/ q, G3 |#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)( {! ]; b9 G- A! n/ W6 i  Y
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% Z5 ?3 u$ a( m9 @" k2 w+ |
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)# K( D( R; K& _; m9 O. d% u
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
) B: V# m0 K  {% N  x7 `; h: k# e& G
/ @- H0 W9 P! N3 z& T. l/* assign the tl som board LED-GPIOs*/. Q/ r8 N7 I# g0 P$ C
static const short da850_evm_tl_user_led_pins[] = {0 V6 F2 U6 M) x2 _  s; r2 W' v
        /* These pins are definition at <mach/mux.h> file */
6 H# ^0 R% ]/ s, T, U; M$ \- ^+ i        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,& z. b0 h3 U5 G. X: F. g6 P
        -1! k7 v" B! m* V
};
4 K$ o5 M3 `$ C8 ?% \/ o! G* Q" s. A8 p7 g6 b  W
static struct gpio_led da850_evm_tl_leds[] = {- h$ X* L/ m* Z6 f- w
        {
" V% n' g) m3 p                .active_low = 0,! i- J- J" }" l7 B/ L; o
                .gpio = DA850_USER_LED0,$ T$ o8 @1 `& W5 P* l% o
                .name = "user_led0",
. g- K8 M* `# \! z* A8 m3 V                .default_trigger = "default-on",
/ F  L# D  w  V  h$ S& w6 m        },- `, F* J' I& z0 |2 z; ?: F4 i
        {
, y7 ~- l% A/ m; C& a                .active_low = 0,
/ M% ~: G- o1 X  \2 d* p7 G5 z                .gpio = DA850_USER_LED1,
# v8 z2 q8 W6 z' m" \) V. I" i; @                .name = "user_led1",
& D" J" I! `8 o* K9 [                .default_trigger = "default-on",$ c: W, v/ d: U
        },
# R) i# H2 Q2 i8 m) |        {
7 l, F* k: q8 |  K" \+ V                .active_low = 0,
! ~  i5 N/ T( z$ b2 @- n9 m; p, H0 V                .gpio = DA850_USER_LED2,
5 o/ o" Q% F: L+ g                .name = "user_led2",
+ r5 m7 d2 z2 ?1 l9 m" E( T9 L" ^* K3 r3 y+ [                .default_trigger = "default-on",
5 }. ~9 C# k1 Q6 ?. x. [! F' _        },0 z' A- M: l% N1 y
        {
: `3 V9 R4 y0 S+ H' l. u" w                .active_low = 0,0 J8 x2 n/ }* w1 [- d
                .gpio = DA850_USER_LED3,9 J5 |3 u* @$ N5 L% x" ~1 ]7 v
                .name = "user_led3",
3 m6 H  S1 o/ t8 \                .default_trigger = "default-on",
6 D9 J2 y9 t1 d8 d5 w        },1 @; U5 z4 q! Z: G2 e
};
* j) Y& y5 f7 o2 b5 a; w' k( y; B* E8 {8 m- U5 k
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {' T7 E1 d$ q1 D# B9 C
        .leds = da850_evm_tl_leds,
: a8 O6 [0 y/ ~        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),! H. I; N; [+ p0 [. a: \8 ]8 D4 _
};
: m( ~  O% @2 m$ r6 h. Z8 t" \6 D( M$ g& w, T2 ~9 s9 U
static void led_dev_release(struct device *dev): s" H. T% ]7 M  Z7 r" a6 z
{
1 Q' l8 `" o& o2 M};
: _' |$ m7 ?* o# \: A) v' x+ B5 Y! y/ ]
static struct platform_device da850_evm_tl_leds_device = {
, G, c/ @5 h0 i) B% n        .name                = "leds-gpio",
, ?1 ]8 T5 W3 P; K- j, G$ l        .id                = 1,+ p" y6 b; I8 r4 z' z
        .dev = {
% H* R1 a* U2 q$ u' D1 s  t4 q                .platform_data = &da850_evm_tl_leds_pdata,
2 g2 V7 C) U9 t. U                .release = led_dev_release,
' U" n$ o2 H5 R4 z/ j+ d) K9 P3 J        }
) _+ Z6 T+ ^3 e3 G};
; G% ~9 j  E# j' r/ v" y3 |
9 @# j% _& g8 v: L) Pstatic int __init led_platform_init(void)3 H) _/ X$ ~; X, N  W
{9 N7 @+ k" v+ h7 f. m4 G- w
        int ret;
4 E$ f7 c8 N  W3 O( R7 v#if 09 L3 N1 l* z% I) M% Y9 |
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);6 b! \" a* ^0 J/ z  g) P1 |
        if (ret)
6 ]" d  p# X+ H* H; G; X  I- `                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"4 Y; i( F3 ?7 Q  b5 ~" A
                                "%d\n", ret);
( x1 J2 M) S0 }( b" S2 n9 J#endif* _* V+ S3 B0 \( ?- ^
        ret = platform_device_register(&da850_evm_tl_leds_device);& @2 B" G- x! j5 v4 E' N
        if (ret)
) w/ r1 N( @5 s$ @; T+ m2 G$ o0 w3 @                pr_warning("Could not register som GPIO expander LEDS");( r, y3 |. f; R# d) U$ M, Q
        else
3 p! [- v" A/ k                printk(KERN_INFO "LED register sucessful!\n");8 ^4 |' d% ?8 f6 {

) T% e" w5 p" E- Z8 d$ J6 ]6 y$ \        return ret;. f! s3 i* U% K* |
}
( T7 k6 ^) ?+ w- N! [
$ Z# A) y* J6 O5 I* A( N! A1 estatic void __exit led_platform_exit(void); `, x1 f4 P& T1 I* Z: `
{
7 m5 X7 ^, U3 q! f0 _( c        platform_device_unregister(&da850_evm_tl_leds_device);, q- H* b4 w8 k" ~1 P& j0 r8 w
0 F+ A& h# |" M, s3 c5 ~
        printk(KERN_INFO "LED unregister!\n");# ]5 H5 J0 q0 N# {0 K' m
}- i7 [- m2 Z1 H! P+ N2 Z6 F! b

% g# f6 y* n+ f: p, bmodule_init(led_platform_init);% O5 y. N% p4 s% ~; U+ \7 K
module_exit(led_platform_exit);
- Q5 f5 [- ~# [4 h& W% g7 o6 j5 M, y5 X5 I+ a2 }, H5 h5 i
MODULE_DESCRIPTION("Led platform driver");
6 U6 ]$ G( J% X2 }MODULE_AUTHOR("Tronlong");
" |( B) r4 C1 s# Z. UMODULE_LICENSE("GPL");
6 `% n, A; x5 ?  n7 w
; M( M2 D' ?4 z1 f( n; l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-23 18:18 , Processed in 0.038602 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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