程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
! S# y( Y2 s# i0 I0 `" [  `#include <linux/init.h>! P( H$ |9 w. d! i, ^
#include <linux/module.h>4 E% `- K  f! I5 y# i0 S) f
#include <linux/kernel.h>
. i3 m4 T3 k8 W2 z: ^#include <linux/types.h>
) y4 f- o# L9 J- ~- W& ~#include <linux/gpio.h>; v* R* ^( R# ]; \' K
#include <linux/leds.h>
/ [8 O; Z0 V2 r+ O' y( c% r#include <linux/platform_device.h>4 @3 M3 M5 e3 [! q' b3 J

- q- J8 l! I7 P3 j8 c#include <asm/mach-types.h>
3 Y' j0 e1 H5 R) p, i, m  l#include <asm/mach/arch.h>
! j+ H+ z' W) I# D% @: Q7 W#include <mach/da8xx.h>
. Z6 T9 o. z6 d% K#include <mach/mux.h>
, P3 J! Q! N, |: I; c- I  j
( y! i0 r9 A+ ~" D#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)2 ~( k$ y( a5 q2 L3 P2 `
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
2 r& D0 x- F; s7 G- c0 @& R* C#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* }  t6 T) o  Z, l: V#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
0 ]) X7 c9 y  J5 m- N" N
9 v" f5 S. @8 x9 z  H4 l/* assign the tl som board LED-GPIOs*/( j( W7 S( z2 ~: i  g  j
static const short da850_evm_tl_user_led_pins[] = {5 Q& \* a5 V. H( t) `8 B
        /* These pins are definition at <mach/mux.h> file */
" w* M7 Z9 u( U" a  y( R# r        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,4 ^' M4 b8 z, J& w# C4 {
        -1, ~& p8 r4 O0 B; `' B6 F' {
};  m4 s) r1 d" u  J6 C. e! b. r: }! J
6 A) ~2 b) T# S8 k5 V
static struct gpio_led da850_evm_tl_leds[] = {
7 m+ j0 M* k9 M, s' I        {6 L& H4 w) s9 E  m7 p0 [! A7 Y
                .active_low = 0,, d, c4 U- K* J0 y& E- ~
                .gpio = DA850_USER_LED0,% v6 b2 h9 B! d7 {( {2 S, k
                .name = "user_led0",6 S6 ?0 a" q$ W; e) L
                .default_trigger = "default-on",* V, n5 r. z/ d% w5 h4 o
        },
) s* H' \% N. |3 j3 B$ P+ |4 _' ~" x        {! B4 I6 X  j, I$ q, ^* p
                .active_low = 0,) v/ T& h. X: l. |$ r2 Q9 W. }( e
                .gpio = DA850_USER_LED1,3 T1 C! ]0 B+ T1 u) \/ A6 o2 ^
                .name = "user_led1",6 r8 V. G. s. K1 T1 B% J
                .default_trigger = "default-on",& v5 O" S1 j% K. R4 i4 m, S
        },2 f. t- ^$ m" Q
        {: Y+ u' `, {# h3 N
                .active_low = 0,
( P( P" m" C  I/ a                .gpio = DA850_USER_LED2,
3 Q  {. L1 q" x* D! N  [& E                .name = "user_led2",- ?4 b( k& Y# O: k
                .default_trigger = "default-on",
4 B' S2 K6 Y5 w& |$ o+ C* @        },* c* V* Q  W1 R9 J! [
        {
* F# O+ H! Q$ ]5 B                .active_low = 0,5 ~, X' ^7 D7 g" D4 M" }/ i
                .gpio = DA850_USER_LED3,! C9 U7 c" J  H! j0 [5 @& j
                .name = "user_led3",0 }* I. T# U& m% C+ H$ o4 _3 B2 \
                .default_trigger = "default-on",4 Q& _) U$ b% v9 h% ^& a
        },
0 r7 J% y6 Z8 b3 }9 _5 W' S6 ?; a};2 {  A. k- R: D) v

0 p  |. K6 `: C+ d/ S. ^static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {; M6 K$ B: N5 Z$ k' W* e
        .leds = da850_evm_tl_leds,
& p0 B) ]" |* y' f# R        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
" U$ n' M  f, P7 Y9 A};
- d! H2 E3 z" J# ?  Q; W0 @
& u/ t! w/ P( [8 }. ~& N: [4 Dstatic void led_dev_release(struct device *dev)
+ f& I% \/ N" I& C, Z/ p{0 t& }3 w% s* ~5 m, p
};* C4 t# J" j+ `" i  h9 v
/ f6 N# q3 j* @  v* ?$ s4 y
static struct platform_device da850_evm_tl_leds_device = {# R; s4 J+ u6 H( n) I4 e
        .name                = "leds-gpio",
* T8 P' p+ U5 U* }        .id                = 1,' ]6 p+ [; l8 g
        .dev = {
: x" O( [* y$ P/ ?0 c9 B                .platform_data = &da850_evm_tl_leds_pdata,5 `5 s1 I% G/ S( f5 _* A3 E8 b: {
                .release = led_dev_release,  j3 M: v* y3 F. i
        }; i% \" M  [2 C4 f/ k
};
8 ]  k# d* e' \: L  n) r; N; r! V3 d8 R" F% u9 z
static int __init led_platform_init(void)
" S: ]* _- i- X* s# h2 \{9 L# E( R$ x$ n7 f% ]
        int ret;, k8 t1 G2 ^+ u0 i
#if 04 v, r! F" ?; k6 R7 c& v# |4 U- X
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
# z% `* A0 @8 X6 ^5 w        if (ret)* \6 u% D6 ^6 T; ]" d9 D
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
$ j+ W- z$ w) @! C                                "%d\n", ret);
6 a) ?! ~4 A* G- e2 g* \/ L5 G* U#endif
! D# l1 H: P' `. s! l        ret = platform_device_register(&da850_evm_tl_leds_device);
4 E& o: _: D' ]" v1 s        if (ret)
, I, F2 \0 g- W0 a4 d                pr_warning("Could not register som GPIO expander LEDS");2 w# Y5 j; D% K" X# p
        else
: @' _# y# y, y6 G$ g                printk(KERN_INFO "LED register sucessful!\n");
  O, |8 r& U7 ~3 R- ~: ?' ]% F( o2 I8 |% h7 I2 g; d
        return ret;
* p1 r1 j; A4 K5 Q; J7 [}
9 [+ X. t/ w( v$ v
% `6 s( l) J! I3 I  M  X' v! Zstatic void __exit led_platform_exit(void). @$ O2 ~) q. b7 T& V
{
- D6 j5 G: n0 V# o* y  E/ l        platform_device_unregister(&da850_evm_tl_leds_device);
& s3 {9 X* @* z* r, Y
5 I! m0 J( A: r& C, A7 V        printk(KERN_INFO "LED unregister!\n");
; i* B$ F/ F: L7 i}2 N2 R5 J# Y/ F6 _. y
* d& f( W" f! B: U% b& P
module_init(led_platform_init);* G. R* \. I: f3 C  V
module_exit(led_platform_exit);
1 {. Q% Y& J  S3 @; s/ k0 J; W( \$ Q5 H6 f6 K$ h; [5 J
MODULE_DESCRIPTION("Led platform driver");
( E7 X  u4 }) M! y7 e9 ]: iMODULE_AUTHOR("Tronlong");1 {" W) _" _% f; q% R) p
MODULE_LICENSE("GPL");, ~' a# U! b% @+ w, ]! z; y
. T: }/ ~& _, M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 13:21 , Processed in 0.038289 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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