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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ Y" f, O- Q. h- y/ r
#include <linux/init.h>4 F: I  s5 F, I9 g& N8 B* b, K0 `7 K
#include <linux/module.h>
. D* S! o  [" F; K8 `#include <linux/kernel.h>  I! y6 _+ j2 N8 }. n
#include <linux/types.h>
4 C) t8 |) y% I0 l2 [4 k. Z#include <linux/gpio.h>
" S* o: W" U9 _( @, Q#include <linux/leds.h>9 r$ I. {) e3 o, E( T& Q0 Y; p" P
#include <linux/platform_device.h>) m- J$ \& k1 R: T, I0 g
, L6 _4 d$ u- M" M
#include <asm/mach-types.h>
9 R; n# D$ {6 T: g" _, I  @5 V#include <asm/mach/arch.h>
: z; i$ V) ~( q+ }#include <mach/da8xx.h>$ [! I; o% h# T# ?7 M3 `
#include <mach/mux.h>
6 A' b+ S9 z% C5 d- u
/ @4 K; |1 @- I& w; E& H* u. g1 T#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)( `. P4 x% S  D2 A6 I3 ?  E* L
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
* U; ^: l( K# d% N#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
. Q( J3 M* _3 p6 t5 @' ^#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
5 ~" w* m' Q, Z: W7 s9 d/ x9 ]
  s- [. w5 K! C) [/* assign the tl som board LED-GPIOs*/
: n1 U8 k) Z- ?5 s/ K8 _0 ostatic const short da850_evm_tl_user_led_pins[] = {4 Q' D' N0 ]* s" R7 g
        /* These pins are definition at <mach/mux.h> file */( L! d% i  \7 U1 l. S2 i( J
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
" n+ K2 B8 d, o9 Q# n        -1- i6 X9 m2 ^' O/ z( I/ {5 V3 G( U
};
, l3 r! [& K+ L9 S
. ?# U& p# U: y9 e. Vstatic struct gpio_led da850_evm_tl_leds[] = {0 l$ O. y! G) [$ _$ \8 z
        {
) o( E) o" Q( q" C# f. b                .active_low = 0,6 h6 r, m- I; T6 e5 O
                .gpio = DA850_USER_LED0,
5 s0 `- E, O: K7 I4 H& w3 t. d                .name = "user_led0",% s1 L* Z1 e7 q8 J, o
                .default_trigger = "default-on",* B: k3 z  h$ v% i, T# G7 S) o
        },: J$ b8 P. N" _1 A" L: _
        {
& J4 e. H) e5 U& x* x- P0 s+ @* |                .active_low = 0,
& o9 f/ [; N( }; R" L/ v                .gpio = DA850_USER_LED1,
8 \! ^3 n+ A+ X' Y6 T7 B6 T                .name = "user_led1",
4 L0 Q( k% v& ?1 W3 P: y% N- l                .default_trigger = "default-on",
7 u+ U! v; f" \        },/ y5 `5 y. ~0 w2 P
        {0 U* r8 V3 L, j% e+ i) z+ O& W
                .active_low = 0,
5 p9 w& u7 {  B2 M                .gpio = DA850_USER_LED2,
( l" G# F2 o; j! K                .name = "user_led2",
5 f- p- r; u" H7 A& W0 |                .default_trigger = "default-on",
% Z! G, u9 u; s6 E        },  K' ^$ o3 A# x+ f" ]0 x. R9 S
        {0 H/ ~0 a% F  g2 o. c
                .active_low = 0,# a, o$ i4 I$ X6 r
                .gpio = DA850_USER_LED3,
+ `# b2 _! _- [. @                .name = "user_led3",
0 ]. q- {$ {+ l' P                .default_trigger = "default-on",, o  k, v2 t; f9 A
        },
* D( E  L! Q2 @; I};
  w% ^7 T& M" i4 j/ `
8 G% ~3 [0 e. P9 T( P, ustatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
& j8 r* |! b" K" m        .leds = da850_evm_tl_leds,
8 c- l  ?! m4 B        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),* l$ ~) _( A# D; h) I/ A3 k
};, }8 U3 D9 V. I- b

& ~  g. I3 k7 J/ x7 I  O8 lstatic void led_dev_release(struct device *dev)$ {! f- _0 L3 r. s7 R
{7 v& K9 A, t* w9 r
};
! k, j9 f9 b; V. T( A# V* U: |1 ?9 J  U( V+ p3 a
static struct platform_device da850_evm_tl_leds_device = {. ~6 C( ~$ C& Z4 f7 R4 u# j3 Y# P
        .name                = "leds-gpio",5 _, @. P$ {8 _& y/ }$ z
        .id                = 1,
! [2 o5 t. m8 n6 C9 n) s3 l        .dev = {
  C% ^' {& X8 F! O6 t! P9 L5 F; @                .platform_data = &da850_evm_tl_leds_pdata,
4 W1 X  g* p. o! k: C7 ]$ _                .release = led_dev_release,
/ q; r3 Y9 Z: \: k# l/ K! \        }) y0 A9 R3 J4 i" \; |0 O5 [; }
};
* P. s$ J0 ~- `$ b3 G
" m9 e' g; q* v& w3 ~6 j% tstatic int __init led_platform_init(void)8 o" G4 G# l, u9 T- Z( A, a
{
/ ?/ @- \" i; ~/ r$ A0 _' q/ U        int ret;: b6 J. v' X  g* U: L+ ^
#if 0
7 n- @7 r- w$ q3 T3 |9 j) m/ K( Q9 D        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
! J. b# ^9 [2 A9 z2 S" J; @: o        if (ret)5 W" Y7 g# R3 Y; L0 ~
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
9 {/ q. b4 f0 `2 n/ I                                "%d\n", ret);- S3 u2 |+ i5 d- f. d1 L& ?
#endif. X1 Z! p+ n" N6 H6 f" w# _
        ret = platform_device_register(&da850_evm_tl_leds_device);7 O8 v6 o0 O+ C8 L( @  h9 y
        if (ret)
% z  F) d! O, r8 d& l7 h! h) H                pr_warning("Could not register som GPIO expander LEDS");
. e: B, B) S2 a3 ?0 G3 @        else9 ^3 ^$ s! W- j/ E6 D5 [$ C
                printk(KERN_INFO "LED register sucessful!\n");
+ V3 B9 R4 n( B' [2 w5 c4 ]* X9 X' k5 x: O+ b  z
        return ret;
0 O+ a% N4 i& `( x" g* V}
4 @# l# L& Q$ A' a1 b$ m+ |9 {9 k: a. I4 T( A
static void __exit led_platform_exit(void)! X2 }3 K" O5 ?: u7 q
{
+ `* Q$ ?: v( q' H+ z        platform_device_unregister(&da850_evm_tl_leds_device);
( Y  E5 E; }) t' s: ]( k* p8 C" X- L' t
        printk(KERN_INFO "LED unregister!\n");5 ?4 q9 N# l0 C
}3 q3 E, s' Q7 P

7 V8 R( M6 a8 y0 `2 gmodule_init(led_platform_init);$ p# k8 F  L" |
module_exit(led_platform_exit);* G  ^9 A' m. f9 O3 H' A- S
" h3 Q% o8 o5 R0 {
MODULE_DESCRIPTION("Led platform driver");
3 q, `, s- ]" v9 H- b- ]MODULE_AUTHOR("Tronlong");7 ?- H( N- T+ o! j0 u8 f- O; t
MODULE_LICENSE("GPL");
$ j, E* |7 [( A3 N3 D$ K# k2 z/ \0 r1 {5 f% [8 l5 L/ y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-28 01:55 , Processed in 0.040537 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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