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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
, |8 Q7 ?! L1 Z. T- h# R4 ]9 i#include <linux/init.h>. i) q4 m5 B/ D: S& V4 [8 L( w
#include <linux/module.h>1 N# n, G0 j" }  n4 o# s4 S
#include <linux/kernel.h>
, ?2 p2 G. e; P! y+ v#include <linux/types.h>7 F0 S* U8 S+ Q9 B4 z# W6 D6 a5 q
#include <linux/gpio.h>( n& M* Z4 _! F3 H1 n1 _* i/ o
#include <linux/leds.h>
2 \9 Q2 j4 [+ d5 a#include <linux/platform_device.h>
- y. Z/ E" y* N2 F0 M4 ]# ^- k$ ?9 G, B0 }; h# s5 o
#include <asm/mach-types.h>
/ \* r7 Q! }$ c7 G/ e#include <asm/mach/arch.h>8 d! D% |4 D) I0 R7 T; q2 O
#include <mach/da8xx.h>
" B, z' T' m' A#include <mach/mux.h>, m. w: R& v) u1 K5 n: f7 S
, x3 q2 \, O2 P& _+ C( x( B: T
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
0 y+ Y! K. T5 A#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% P* B! j$ G, m+ Z0 G: N
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)* T8 F3 Z7 O& }2 `
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
; A; V' M* D$ T) `. M9 d. B4 [. l6 ]' `
/* assign the tl som board LED-GPIOs*/
, A  K6 j" M1 q1 Astatic const short da850_evm_tl_user_led_pins[] = {
# o( t* Y5 w- d; a& D8 S        /* These pins are definition at <mach/mux.h> file */
1 n3 N- _# O( N% v' \& y1 a9 q0 Q        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,6 V! I, c) S0 r! j
        -17 F& ^3 O1 H/ t1 z. X
};
* D, o  `  f  R6 N" {9 Z0 b$ }3 o8 j/ m
static struct gpio_led da850_evm_tl_leds[] = {$ V* [) K) ?* x6 S, L9 u8 S
        {
9 S9 h3 D# o8 S; {8 q5 A                .active_low = 0,
$ y* o. i: E$ F' Q8 J: ^) S4 t3 O                .gpio = DA850_USER_LED0,
/ U) K( `& i1 S% f# P: k+ l' I                .name = "user_led0",
1 L. S6 d2 |5 A$ o9 E                .default_trigger = "default-on",) j9 h- ^6 a% o) K. V( K2 y
        },
: a9 ]- ]! n  S4 L* m        {; K; C/ O. F) h
                .active_low = 0,+ o) `/ ~9 }: t1 z
                .gpio = DA850_USER_LED1,6 i5 I& I8 m; a. t
                .name = "user_led1",& R$ g; {1 W1 ^; G) d
                .default_trigger = "default-on",2 M- X" [# k8 p0 F) R( H
        },( ^+ q. @1 |/ z  s) m, @5 o
        {
$ o# [' I0 b4 g/ Y  i3 K: b; m                .active_low = 0,8 I; {9 F% y% U. C
                .gpio = DA850_USER_LED2,
4 j. h2 G6 K. e7 e/ h; U8 L" q                .name = "user_led2",
* h. _! n+ U' G$ p5 E+ g1 L/ f+ H                .default_trigger = "default-on",% [2 i5 K& T  {( q( {( F
        },$ L; n6 s* a' Z/ ~) r
        {
9 e- s8 z* \; @% A5 Y                .active_low = 0,: W* n8 g1 v' w7 o/ G
                .gpio = DA850_USER_LED3,
5 d% o0 C$ T2 W) @                .name = "user_led3",- R5 k6 [6 [, K1 N9 E( x: R
                .default_trigger = "default-on",
  G+ ]$ m: x4 x! h; o& D* @  M        },5 ]' ~; z3 _4 ]
};
- X5 _0 L( H' \( X8 D: y9 X' Q6 _$ ^1 N2 M" h: @- i' l
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {4 q# \, P0 q) K; d: k
        .leds = da850_evm_tl_leds,! K0 x( H: d1 I1 V. k/ Y+ H
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),- ?2 `/ I7 }4 I5 z! F4 V1 P
};$ s$ M: O0 {8 f% g

  m. P2 }$ x) T4 Istatic void led_dev_release(struct device *dev). o1 b* {  G" X% h
{1 |. k$ Y6 B0 Y" F6 ]
};$ x7 \6 x. e; U1 c5 K2 O0 L% d" h; q
% u  x- C  N% ?; T6 ^, }
static struct platform_device da850_evm_tl_leds_device = {2 Z  O& U. J' C5 ~. O/ ?
        .name                = "leds-gpio",# J6 V% v+ E; a) m
        .id                = 1,+ y$ {. c1 H# n  P- q) {
        .dev = {* `: s  O& D" u8 w6 u' e  Q' z& T
                .platform_data = &da850_evm_tl_leds_pdata,) F1 S9 `6 l! {  C
                .release = led_dev_release,
3 _: j7 F( \2 F: G" a        }0 y/ N8 z( d9 }- i( n
};" G5 `/ i/ b7 ^& m# [1 ^$ t5 R* J
0 j  M1 z1 U5 i% A: q9 Y8 j
static int __init led_platform_init(void)
4 m+ t6 s5 v. o$ c{: O' K9 Z! e3 X) }- ~8 G$ y
        int ret;; S# v( ~6 n0 _4 [0 f
#if 0/ T: F- B4 o' g4 O$ M
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
" d0 v; e- X- Y0 K. f7 ~* T( Y9 @        if (ret)
5 f% M/ k- a3 Q8 P$ |4 r                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"1 S3 @' A' w& \- v; ^
                                "%d\n", ret);
2 [' d! Y8 z/ M! M& N; I7 Y#endif
. Y' m2 N: l# n5 l6 {. s        ret = platform_device_register(&da850_evm_tl_leds_device);* {$ e4 h! b# H
        if (ret)
0 e4 t) ~: t* o2 W7 Z) K                pr_warning("Could not register som GPIO expander LEDS");
7 o+ ?# P0 i/ V, S4 t% O& q& R        else& w: e/ p; `* e6 A+ p. k( l
                printk(KERN_INFO "LED register sucessful!\n");3 ~% ?% a  g2 z  d
' x/ G6 D' v% ]! w0 P
        return ret;3 |3 L7 R: ^9 u( y: h8 J
}- Z% A& ^) y2 @4 x% L6 `/ l) t" d
4 N8 m, J' {7 y4 @. n1 {, w! P8 M4 v
static void __exit led_platform_exit(void)
+ J) g. h! c: ?$ @{' e: V" y# P9 r( H
        platform_device_unregister(&da850_evm_tl_leds_device);
7 I' a. z" G) L8 s0 n
7 ^# {, y$ C: J5 m        printk(KERN_INFO "LED unregister!\n");' \' @) y4 R0 U4 p& A. D' i
}* h+ N. E- G! B4 z  }
5 q& v& A1 X  i
module_init(led_platform_init);
% b  j  y* _6 L& k' ~6 X1 l, ^+ amodule_exit(led_platform_exit);
& v# R1 X; f6 u# X6 }
" a8 `8 l. a+ M. N- zMODULE_DESCRIPTION("Led platform driver");
" a) V8 B' n' r% C8 I, b- iMODULE_AUTHOR("Tronlong");2 y9 Q/ r( _( s4 d
MODULE_LICENSE("GPL");
# R3 |2 K9 l& j7 W  ^4 R. h. d4 E8 o) l0 H; K( w: U* J: \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-16 03:24 , Processed in 0.038251 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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