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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。- [2 B1 l5 A; D* _/ C  ^% {" @
#include <linux/init.h>
& W# I( e5 @" _, v8 z/ [4 q7 V#include <linux/module.h>* i* N; F+ r% F, ~  |, `5 R
#include <linux/kernel.h>" B& A4 q! M5 d
#include <linux/types.h>
2 w8 G- [7 ~2 d#include <linux/gpio.h>
( y! A& S) }( B7 r/ t7 |#include <linux/leds.h>
: y; A, e1 }1 t& K7 M2 H+ D#include <linux/platform_device.h>
- T9 w( |8 n: z# V) H
" q8 p) ^- R* p/ ]8 t#include <asm/mach-types.h>  n- u5 C# F# K4 h% a% i
#include <asm/mach/arch.h>0 ~! R! q9 N* Q3 D8 h" \+ O
#include <mach/da8xx.h>* S9 \& M/ I% X/ e7 `$ m. L
#include <mach/mux.h>
1 v3 c2 ^* _0 I1 x9 Z  p! t# j+ y! A' K! z; U
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
' X1 y5 `+ l& S. c2 b7 Q#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
% ^+ z) ?$ Q6 U0 R) ~9 A6 J#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)8 w6 \: B/ U4 D) f+ m& v
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 {  {* y: }0 n7 d0 P. H
/ o+ s4 \+ i1 }# r8 g: F& g$ y
/* assign the tl som board LED-GPIOs*/
: J* w: b5 w- {, lstatic const short da850_evm_tl_user_led_pins[] = {
$ V1 a' ~. d3 d& h$ l0 A        /* These pins are definition at <mach/mux.h> file */
: q. }/ h0 g- ]1 `9 Q/ r- {        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
0 C+ d1 U2 P& v( r        -1, q2 n" [1 v! T, q3 k
};3 ^' z8 n, H6 h  K- b3 ?

* _3 M" l, I! A3 Nstatic struct gpio_led da850_evm_tl_leds[] = {
9 f1 w+ M" ]! t% @# I        {
, M5 ?2 Y* E- P2 ~9 |% C: v. x7 O( r                .active_low = 0,
' P( c- w0 _2 l6 Y                .gpio = DA850_USER_LED0,( J) r$ [% \1 w4 p; ~6 l1 m
                .name = "user_led0",
* M0 T8 V0 \/ \. ~6 j% B7 @0 F7 \                .default_trigger = "default-on",
0 r% N) L9 f9 U% p- i4 @        },+ @" @1 N8 O) ^9 T
        {
# Q* S7 ~8 O1 o1 y7 j; Z9 Q8 H7 q8 ?                .active_low = 0,- R# Z- u5 d; `( t. u: z( P
                .gpio = DA850_USER_LED1,
5 G4 l( {$ }3 }0 S5 z: ?2 d+ i, v                .name = "user_led1",8 D, B) [$ [9 L& _; ?
                .default_trigger = "default-on",
7 ]+ R4 |' w+ b        },
. ~% E% O% k% K* C0 @        {8 U( ^6 l9 e% ^2 y3 q) o
                .active_low = 0,3 [5 f9 h- M$ g! [
                .gpio = DA850_USER_LED2,* L* p2 Z3 m' {/ S9 _
                .name = "user_led2",
0 C" j- b& i$ y& i                .default_trigger = "default-on",9 E0 ]  _) C3 p, y
        },# Y- d$ _  F9 t. @
        {
+ q$ ~- {4 N, {: \5 f8 ]2 U0 L$ D* q                .active_low = 0,4 p* I7 C9 U5 v, x
                .gpio = DA850_USER_LED3,
/ ]5 m# v1 v: y8 `5 N9 `8 \3 A                .name = "user_led3",
( b' h) A! B' ^, f                .default_trigger = "default-on",
% J9 C4 V4 H4 F8 h( l' l        },
# P  x8 G- I: z9 u' b1 B};
$ {0 D- B1 I  f. ~3 w7 r8 I" ?7 u. X- i4 [' p9 F
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {& _: Q* E5 t3 @; ?- K3 w/ Y. Q
        .leds = da850_evm_tl_leds,
( b5 v/ K4 W9 a/ ^4 H* s5 T        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
7 n! w8 R5 J7 D1 |};
, k& S9 D6 J( o0 j- [
1 e8 E% i& v7 T8 O# Cstatic void led_dev_release(struct device *dev)
, u; G; C, d% h4 ?0 ^5 R{
1 Z9 `) @/ o' k* U' ^' q};8 \1 e1 |4 j" ^3 q3 {1 K6 p
4 ^, t/ h+ |  F( V  ^
static struct platform_device da850_evm_tl_leds_device = {0 p- j/ T3 i. ~1 R% `2 q+ P
        .name                = "leds-gpio",
$ z- c' V, o, Q) u3 h        .id                = 1,1 R) G. D4 K# X" b) s
        .dev = {3 A: Z- ]0 a  I: m+ }! r
                .platform_data = &da850_evm_tl_leds_pdata,
) {, i  {$ ~) P9 @" d$ N                .release = led_dev_release,
8 K, I+ x+ c& Z9 Q7 w) ]9 K        }6 U( n. i8 U6 j( r0 ^: C' O. L6 q
};
% {+ x/ G3 p$ o" A; D5 c, ]# E+ M9 x) s: c
static int __init led_platform_init(void)0 e$ e: |. r5 H9 R0 l& e6 {1 W: v
{$ e% f0 Q% t* P! ^$ S' Y3 o; i
        int ret;* L( t( M1 L* G
#if 0* E) F" n6 i4 H9 o/ u" g& n9 F) Q
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);& a3 Z3 d% Q1 e# v
        if (ret)
4 `2 o! b: c4 Q) G. P- w                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
. s6 f' H$ h7 v( {9 b2 T6 D                                "%d\n", ret);
, K! h4 u7 Z% \, y. `4 b- F: D#endif
. }. [& g! X8 R  m        ret = platform_device_register(&da850_evm_tl_leds_device);* B' t  T: r2 g/ K
        if (ret)
+ s8 J9 c' ?& t" I  N                pr_warning("Could not register som GPIO expander LEDS");
6 V( T  |9 g2 b" u0 q* X) B1 f& k7 h        else1 N; w5 p' L# X9 m7 q
                printk(KERN_INFO "LED register sucessful!\n");: K- y2 r8 a, f

0 ~( n' p- N% }9 q! q        return ret;* h' g" B% h5 h  K- e% _9 `1 a
}
5 {- N7 Q7 o& g) m0 h
% S0 y3 Q. F# {" J. O# ^. Rstatic void __exit led_platform_exit(void)5 D/ Q* n+ ~" _3 t
{
, f6 I) a! d1 C  n2 A9 F& `6 @* o        platform_device_unregister(&da850_evm_tl_leds_device);
) o% ^0 q8 e' T* L; H/ j! S; v' Y/ T: a/ L9 B
        printk(KERN_INFO "LED unregister!\n");5 W1 k1 j) j  q  R
}
) t/ s9 y' [# X  K7 P% }' q& a' ^! `
module_init(led_platform_init);
5 R4 h; A2 k- rmodule_exit(led_platform_exit);% G% t. d- V+ w6 Q

. t( W2 O3 h) t2 rMODULE_DESCRIPTION("Led platform driver");" a2 _9 H/ j5 A, w; Z! K" q
MODULE_AUTHOR("Tronlong");6 D5 ]* ~: L! C6 T7 i( N$ L) w- N1 G
MODULE_LICENSE("GPL");
; O( {0 K& M2 j; N
5 l  R: R) \! ~; e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-9 02:13 , Processed in 0.039106 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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