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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
( q) \4 t: R( J0 ], s#include <linux/init.h>5 ]( Z; Y+ r9 w0 K. n  ]3 f" B, g
#include <linux/module.h>
& p: K+ w6 t  y0 E# l. p: l  A1 U. F#include <linux/kernel.h># u4 r) d1 l6 L2 U7 A& q2 U
#include <linux/types.h>
1 `% C% w& X; z/ ~  D#include <linux/gpio.h>. ^' b# s4 ?) C
#include <linux/leds.h>
1 _' K- ~7 ^1 |, Z+ R7 H* D4 s#include <linux/platform_device.h>* p+ I# b! y8 [$ z* K# e
1 D# S$ u% S3 Q$ O* j/ H8 v5 Z$ J! v
#include <asm/mach-types.h>
" R1 h' s) X# X#include <asm/mach/arch.h>
( w8 M! q/ ?3 B+ f, `+ B  D, z7 [#include <mach/da8xx.h>2 J! U: w( r0 s9 Y  T5 e2 J! c
#include <mach/mux.h>
& n9 z0 k! x! [5 S3 n$ i& _* n( F7 I/ e5 }
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)  O( m6 H$ \3 T9 o" R2 b8 [. i! C% w; y
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)6 k" ?# e1 r- S) D
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
" i$ s, n1 O% z/ t9 S. O! ^#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)7 e7 z* h9 C2 i! l
/ w* U  ~9 z4 `4 V) q% @$ Z& o/ h
/* assign the tl som board LED-GPIOs*/: ?, G, z7 Y9 h( M/ F5 k& k
static const short da850_evm_tl_user_led_pins[] = {
7 C" }5 C% a1 L3 A5 D        /* These pins are definition at <mach/mux.h> file */
: D4 |9 z, q5 i! c9 C! k        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
) b0 d9 X! ]1 ?( ?. z3 P$ }% ^        -1  v5 G3 O3 n  `9 J" c
};
( g9 f& U7 `5 D  P& w, z* h
$ Q( ^/ ^6 B1 X4 B3 istatic struct gpio_led da850_evm_tl_leds[] = {
- x% ?, e8 ]- g4 T        {
- e" C+ x7 Z$ I% Y                .active_low = 0,
( B+ _. x5 k& L" f! `( j                .gpio = DA850_USER_LED0,; Z2 P8 u2 c' I( M5 o& e% ~6 \8 o
                .name = "user_led0",
4 ?* D' j- F, R7 Q2 n! A6 H: ]  m: P                .default_trigger = "default-on",- [# e6 ~1 `! @7 v7 m6 j2 c) S+ z
        },* W4 U" _/ }/ H# V
        {
) g# ~1 ^) i9 _, X1 }9 q                .active_low = 0,
5 Y( f* D6 D- P0 k                .gpio = DA850_USER_LED1,
/ \2 V- _' _+ o, F0 }                .name = "user_led1",
9 z! ?! u! |+ G% G) {2 K                .default_trigger = "default-on",; G8 ]5 ?. J/ Z! G6 V# e
        },
7 y; w. \- N, x        {
) R$ y4 M0 J/ m! W+ l                .active_low = 0,5 L+ {) d1 b$ g5 q' z$ f( [& P
                .gpio = DA850_USER_LED2,4 j$ w& {  f" ^% C' `8 f
                .name = "user_led2",8 C/ x0 b8 z: K3 K7 x+ [. c: c
                .default_trigger = "default-on",. C& x2 x4 K- }; V' X
        },
) V) b* P5 `. l; z2 }* q% S        {
% @% j. o/ _) Q7 s% G4 f- v                .active_low = 0,
; M- n6 h( N) o6 d                .gpio = DA850_USER_LED3,
* L" m9 a* W1 |                .name = "user_led3",
+ P- ~! O4 t: y* M# [                .default_trigger = "default-on",. c8 C, u+ R1 x, J
        },
2 _, V+ s0 d( ^; P* c};4 n# }8 d9 L+ L

. f0 m: `( p, f" \3 o2 Jstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
5 M# s( X- b8 A. ^0 A5 |/ h5 b        .leds = da850_evm_tl_leds,
' l) o6 T0 C" Y2 R" a( W5 V0 r        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
, V% `2 r1 H4 U) y# T+ W};
+ {* z: L4 S# K+ z. Q
: r  }6 l) L0 |$ N# W4 E* m- Nstatic void led_dev_release(struct device *dev)
5 v! B0 k+ d/ P) M{3 B& h# @% X, u, [% Q, J/ Z
};- M+ C$ }" p( V5 X
0 `# q& H. G' N! r) Q3 {; @0 g
static struct platform_device da850_evm_tl_leds_device = {* ?5 m1 U* g  x8 p; V1 p! u
        .name                = "leds-gpio",
! _. b* H3 O+ U) v' Q, z& J% `        .id                = 1,
. e) u* {) P6 B% ~( i1 m        .dev = {- ], G# C8 v" E% o# {1 C3 u- a
                .platform_data = &da850_evm_tl_leds_pdata,0 M( r# V$ B; Y8 V% u5 Y2 w
                .release = led_dev_release,2 |( c; ^$ [6 }& c, P" v, |( t
        }' S! x' l; W* `% _! ^
};% {. s" g! r* f( r# J, _3 M

0 G/ C/ C. I8 B+ u0 s( p2 V" }static int __init led_platform_init(void)
9 b' B* o0 I1 q, a) T) l# f5 V{
* [# H4 _% G; t: s1 X0 \* ?        int ret;! I, a% p& }: ?* M
#if 06 e: R* v% |+ }5 y) E
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
( V: E" A, I: I* A, i+ f        if (ret)4 t( I; F1 T4 R
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"4 ^& b8 U- W% N* M8 E  q' f- |' k( M
                                "%d\n", ret);8 x) p4 ]3 `3 k- O& y' K3 Y
#endif! T: W1 Z1 y8 N' V) T# T
        ret = platform_device_register(&da850_evm_tl_leds_device);
/ U' ^2 u) H" G. u        if (ret)
5 |6 C( S# ^' e$ B8 Q5 R                pr_warning("Could not register som GPIO expander LEDS");3 W+ S; n" \" q! ?, O
        else. U! n2 i! c$ L% D0 @$ M7 F2 A. p  O
                printk(KERN_INFO "LED register sucessful!\n");
6 Q  b. p; ^: e' }: S
6 k* l0 g) z3 Z) F- q! @) Y" ^5 k        return ret;
5 S8 h3 }* V* W  ~}
7 w* M- a- h' ?. d  B( o
* i3 m$ K* \$ sstatic void __exit led_platform_exit(void)0 l1 S' L! H* z( W9 L5 A( G- o- U
{& k6 A+ g7 I) P' t" d
        platform_device_unregister(&da850_evm_tl_leds_device);
% f- [9 L: t3 Z; M* |6 C: S; o& ?- o+ C1 K
        printk(KERN_INFO "LED unregister!\n");
4 x6 n  B* ~+ g- H* X4 N8 M+ n! u}+ @8 P* H( I0 t3 d) L" f
' n& T: M5 P+ Q! S' a
module_init(led_platform_init);, y1 ~0 a* _  @% p
module_exit(led_platform_exit);$ Z/ K' v/ ~9 p  U4 E
: R. z$ E$ X; S) }; V7 @. _
MODULE_DESCRIPTION("Led platform driver");
* a9 N) g- y- X5 j8 M! F3 Z1 u) u4 YMODULE_AUTHOR("Tronlong");
. o, d' X" I9 N" OMODULE_LICENSE("GPL");
! @; |& R$ a" E6 c+ |' b: W, ?4 A9 l& q5 L# J$ r: T9 y9 H  \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 03:23 , Processed in 0.035545 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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