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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。% H- c* b- p" n7 s1 K
#include <linux/init.h>
6 p* ?( Y8 J+ ^8 s2 ^: Q/ j6 O#include <linux/module.h>
$ _. P" K# H4 H" }/ Z2 `#include <linux/kernel.h># z- Q( b  R: W7 D: V- a8 }# t
#include <linux/types.h>
1 W9 t6 t' n: z9 ~% Q2 N9 g#include <linux/gpio.h>
( r7 N/ R$ Y* @#include <linux/leds.h>
1 Q6 i7 v, _, |  V& Y7 W#include <linux/platform_device.h>
2 F2 a1 G* d4 p
- N; T7 ^' ]1 M#include <asm/mach-types.h>9 w$ {8 a% Y- W
#include <asm/mach/arch.h>
# z. `; f; F3 ?3 t: P#include <mach/da8xx.h>
; G' q' O0 K7 C) Y2 x#include <mach/mux.h>  C3 ~( Z2 m1 [  r0 v+ _

( t6 Y5 m% F% c* z0 H8 H#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)' `+ R5 a; O4 i& }# O$ F0 m- f
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5); |) l: ?' s/ F
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)4 ^, d1 W4 u1 H7 Q
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( j& g( K7 }* u2 F, W) n
! N5 b+ x$ E9 U" }% e* o& R0 H* E" R
/* assign the tl som board LED-GPIOs*/
& e: X0 e* F& H8 M7 }" ^9 A/ Istatic const short da850_evm_tl_user_led_pins[] = {7 s+ w. D7 x) e% k' l  |9 B, i
        /* These pins are definition at <mach/mux.h> file */4 ^1 f8 C% x/ G- ^" W# |4 `) r% _
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
; n) \' \1 g$ h+ X& N- G! g        -1/ I: G" Y( q6 H+ U& y2 Q
};4 Q$ H2 i- a0 A' x
3 Y' o8 w1 `3 I, M( J3 U
static struct gpio_led da850_evm_tl_leds[] = {
3 D: ^( u: k  g, j+ x        {$ m- z. f0 G3 R9 e. A3 b) |/ u( l
                .active_low = 0,
; `# I& g& e+ J7 X                .gpio = DA850_USER_LED0,9 X. @3 O, J1 Y: V$ }* m
                .name = "user_led0",
" |& W8 l5 Y, s3 S; f$ O! `4 c                .default_trigger = "default-on",: Z: h: E& c# |6 q2 I1 C( i5 D
        },% n+ F, [1 E. s& D
        {
4 `: D. z5 S1 S9 D                .active_low = 0,0 `. b" Z' q! ~0 N8 C# f4 y  Z+ H) D
                .gpio = DA850_USER_LED1,
- J- ^3 ~5 e7 \1 ?9 p0 h. d" L                .name = "user_led1",
! D2 V& E) C, }/ B: r                .default_trigger = "default-on",4 q+ [8 ^5 C& Z' g
        },, u( @7 H* g4 W6 _: a! x% `# G
        {* i2 e: @  s* I
                .active_low = 0,
9 ^* c. [/ s" z6 D                .gpio = DA850_USER_LED2,% q1 W& ?; \+ _) P3 }
                .name = "user_led2",
( Q1 p0 D* f7 R+ }+ D/ q                .default_trigger = "default-on",
/ M0 v2 L# R  S6 U        },
2 ]0 |( D4 K! ~4 S3 q  J$ P3 Z5 f        {" `5 {$ U6 Z; T7 |" e& ?. l4 L/ \
                .active_low = 0,
- Y: m( a4 F+ s/ E2 M) r                .gpio = DA850_USER_LED3,9 s# v3 ~% J! `
                .name = "user_led3",/ J! i  q% ^2 B5 e) R8 x" \. t# J
                .default_trigger = "default-on",
# v6 K8 `. ]6 q/ M5 M! A7 a        },/ @/ }1 u6 C7 ]( ?
};* t* p# j; L% \0 Y! [8 o9 o, J8 _
$ n/ {8 M: w1 S5 N
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {* G% G$ j4 h7 f
        .leds = da850_evm_tl_leds,  m* v4 W2 L" ~2 |
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
5 I; e+ v1 a" ^4 F' i};7 e' b1 ]! ]8 P+ f5 ]. ~, C

5 w# j$ c' M6 \static void led_dev_release(struct device *dev)
2 c5 B: J" x* s% A/ O{
1 K; J  e6 o" X0 G};
" J; t- D$ u; d6 p
# F$ C* o* C# L8 wstatic struct platform_device da850_evm_tl_leds_device = {+ p( M: V; q' C, G
        .name                = "leds-gpio",
2 x  V) q1 T% i6 d) i5 S        .id                = 1," M. {& J: j6 J! l/ M* w0 C  ]' t2 `
        .dev = {
$ u0 ~3 b% l/ ~3 j- h                .platform_data = &da850_evm_tl_leds_pdata,
! N9 \( X3 B2 @3 @/ i6 W                .release = led_dev_release,
; n) F1 y: F9 X4 N1 t        }" s9 q9 J2 M* d, J5 r0 y4 c5 l
};
* r: Q" S- ~5 B4 M7 w# x- m" F3 z" v$ B' {$ c% g! }
static int __init led_platform_init(void)9 B: J4 Q2 U, ^) e6 j; X2 Y
{
8 W9 w3 d! ]/ R. \) z9 f/ Z        int ret;2 R8 r$ q, N# H# f  k9 M5 ]
#if 0: N, d: b$ v# p+ g$ j+ {: N6 e
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);0 ?" |% N0 m  `+ R% N
        if (ret)4 ^3 @* l9 H$ q8 j2 ]2 M
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"6 b8 Y0 P& t/ [* X4 v& c; _2 F
                                "%d\n", ret);$ ^2 ^# N4 i8 [
#endif
6 w6 ]- W; O8 w        ret = platform_device_register(&da850_evm_tl_leds_device);8 _9 R# R* g7 ^* u/ I
        if (ret)
# K6 x8 A% Q- Z; m% z$ q9 _                pr_warning("Could not register som GPIO expander LEDS");" O; N! v- r9 o0 ~# i  h0 j
        else
3 J: w) F& |( [6 L                printk(KERN_INFO "LED register sucessful!\n");7 k1 q% U* J4 |( ]9 |# p
$ w9 W9 n; T6 _7 j' c; P- h
        return ret;9 H; X! f- \# g' E- ]0 E
}) ~: p! q3 e' R+ ~; t

  B$ G0 w9 c" Q$ hstatic void __exit led_platform_exit(void)
3 X$ `6 f7 S8 n+ S2 y2 L( u{
$ L! L) L8 w  \; E9 t6 P        platform_device_unregister(&da850_evm_tl_leds_device);
9 T9 i! s0 j! {  R+ n5 U, A6 c. e' J$ F+ ^+ Y
        printk(KERN_INFO "LED unregister!\n");2 U6 R; E0 o9 s5 v0 u, r* ]
}' E2 |# r# e* j2 t+ A
# r* F* |' v; y% r, E7 ?+ {" l8 j6 v. i
module_init(led_platform_init);
, Y, _4 p) I6 f# U( }4 L( {* t$ Pmodule_exit(led_platform_exit);
4 P. r4 n# A( ^, E" Y3 u' {
( l& O# k8 |9 K) t2 C8 cMODULE_DESCRIPTION("Led platform driver");. Y2 @, q$ F8 _6 W
MODULE_AUTHOR("Tronlong");6 _7 u- b" V! E, h. n. x7 E
MODULE_LICENSE("GPL");
1 t- \! c1 A. V4 _! L0 x
% ^3 f& E1 S/ m0 U# s  f2 V# g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-19 03:46 , Processed in 0.039646 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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