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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ ~; X/ G& }' W: z& ~8 z0 ?
#include <linux/init.h>
% g0 Z2 Y# `5 Q$ R#include <linux/module.h>
; v% {' n( u8 a! k% J3 [#include <linux/kernel.h>
) p. y2 I9 j" i- D* g#include <linux/types.h>) j/ ?" |* r- N0 c4 X1 b3 r( h
#include <linux/gpio.h>
4 }+ A/ R8 Z/ m) H5 H! p#include <linux/leds.h>/ B/ N3 X0 R2 r
#include <linux/platform_device.h>
% a4 Y8 u: p% l( H
! r/ R. p+ Y, v+ @0 m7 u3 X% |- y7 N#include <asm/mach-types.h>
% y- o" c! E. m, e$ J- v' c#include <asm/mach/arch.h># z9 y( f- [6 V; y; U
#include <mach/da8xx.h>  a" A5 {- ^+ \  [5 ]
#include <mach/mux.h>
  j3 J! ?8 V7 o" ^* ?
9 t( L' F$ e# m" i0 ~#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
* d$ q# a; l8 ~* R! X; d5 L! ]#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
/ X( o- \. K4 v4 ]6 w+ b7 X#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)5 N6 b# ~  G: \  Z/ M3 e4 T3 h
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
( F& \5 q! j4 C( W. l1 i" J) Y: t% S$ w
/* assign the tl som board LED-GPIOs*/
9 \( l. y/ h+ j: O; J, [  I" vstatic const short da850_evm_tl_user_led_pins[] = {
( Z, a  X7 f  a6 X5 \% P1 `        /* These pins are definition at <mach/mux.h> file */
/ U& x# [6 S, K* ~        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,* ?- v7 t% w$ }* B# x: i8 q& Z( ?, p
        -1: Q8 U* g% n. h" {8 I
};
$ {8 a0 G. x. i5 l; @7 ]& W0 t, H2 B5 {1 |. q
static struct gpio_led da850_evm_tl_leds[] = {  q8 Q$ H* A; o; v, m7 D# B9 |2 F- A
        {
* g9 j, `' y: d  k                .active_low = 0,% [' U1 d% Y3 i- L' _
                .gpio = DA850_USER_LED0,
5 Q$ l5 _6 h* ~% b  v: g0 Q: o, R                .name = "user_led0",
6 B9 r  \0 K5 G                .default_trigger = "default-on",
; ?* U8 C" x$ t. R. c        },5 y! c: h; Y# J0 W) F
        {
3 k" S" b; j. j$ W                .active_low = 0,
( }' |: F% P/ a( ~" `( s                .gpio = DA850_USER_LED1,! R, P( G* w2 k. U+ \* i% G
                .name = "user_led1",
% ?1 y2 ?: W& O9 ^6 ?                .default_trigger = "default-on",
+ {( _0 e/ r3 Y* n9 C        },
: k3 c7 w4 |$ \        {
: j& O, t4 V$ X4 |6 L6 n  a( `                .active_low = 0,
; {# e4 q2 f% F/ N. r                .gpio = DA850_USER_LED2,
" X( Q. v* ?( o5 ]) g- i' t9 p                .name = "user_led2",1 m6 A6 d9 G5 J: _: A" u# e
                .default_trigger = "default-on",0 D$ P5 N" l: k) M
        },
# S* j1 F( J- v8 U  [) t        {2 \1 r+ G8 m2 c/ z7 }
                .active_low = 0,9 Q2 X6 k2 j* p) H0 Z
                .gpio = DA850_USER_LED3,/ x5 z6 D! b+ p1 i0 G  V0 }$ l1 u
                .name = "user_led3",
0 J+ q. _( q+ i' c: B4 a                .default_trigger = "default-on",7 h1 {+ R( L$ I4 X6 Q: L  [6 I- T
        },
2 s+ R$ g+ Z& p* f; z};$ _: A2 s) X* W& ]6 Z8 P  Z9 ?

% ]: B, ]" w5 Z% k! estatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {  ^5 V$ S5 Q5 S" V7 K8 s2 z
        .leds = da850_evm_tl_leds,' G% N# s6 Z. n8 u, H1 J) q0 Y
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
8 K8 _8 s, `0 o6 Y/ f};" X4 b* W9 g+ G) c) ?
' d4 F$ P% b. c8 n% ~
static void led_dev_release(struct device *dev)
4 [. m: T, K  G) \1 {$ i% p9 \  V{+ Y# h4 ^- @) B+ ^# x
};
% p0 P6 G9 H" ]3 a, g: }2 I: _5 L7 Q! e1 o1 l
static struct platform_device da850_evm_tl_leds_device = {
# d9 P( d/ v+ J- d  o        .name                = "leds-gpio",
+ ], j5 ~& O  X" L        .id                = 1,6 h' }5 [3 K1 N, k2 f* a: D# N
        .dev = {, @2 j5 }8 t, C$ A3 U
                .platform_data = &da850_evm_tl_leds_pdata,
# N) E% X* j! P" n8 O( Y                .release = led_dev_release,
1 ^* p* \4 s, }: ]* k* L, Z        }& O! [7 w' d& C; A- W
};
3 l# J& G5 Z6 l- `7 b
' U( |7 d8 _/ S6 H/ X) C2 gstatic int __init led_platform_init(void)9 }: c4 F7 J6 R; b3 [
{4 Q$ f: n; z; r/ b' l9 \; z
        int ret;, l/ n4 J& P& o6 Y6 ]1 b# p( O
#if 0& o0 W3 p: @+ Y; P  t6 ?" u
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);) h! z/ g0 S6 |8 n9 l
        if (ret)- W4 o& I3 w6 V& |$ ?- S1 c$ K, @
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"+ D. S1 Q2 I/ U; ?* b0 `: \
                                "%d\n", ret);
, ^1 Q) ^# \; ^% w( {& p" n  N#endif9 U5 t+ W1 {7 |7 g0 v- Y9 c
        ret = platform_device_register(&da850_evm_tl_leds_device);" G$ O2 {( K* m, Q* w0 Z' X
        if (ret)
2 W' |" |1 ~( T+ `, m" `2 c: d7 ?1 ~                pr_warning("Could not register som GPIO expander LEDS");5 ^1 q  N( A. ^9 p' f, w
        else
/ |. F: t/ A! {2 t5 o2 s% i% q                printk(KERN_INFO "LED register sucessful!\n");
0 ?0 ~5 j4 l1 A
# m+ w  \& d4 a3 }) g( Y: `2 X$ f        return ret;, ?. A7 W5 y+ A5 R: v; j) r
}
" V: V$ \+ K! t" v
6 D: N& C: p3 {3 t( ^- Vstatic void __exit led_platform_exit(void)9 ?2 b: _2 h* `# P
{- n1 R7 D# T$ H. f$ ~2 G, y& F8 k5 t
        platform_device_unregister(&da850_evm_tl_leds_device);9 n; D/ ~4 p" O  F$ E

) O1 h7 j0 K; y8 _        printk(KERN_INFO "LED unregister!\n");
1 N$ M: j3 _4 \. i8 F9 M7 v}
2 u9 j" c; O  L: c/ c1 A# `: u
) Y1 e7 g6 H, n* Z1 f7 Umodule_init(led_platform_init);
4 |7 d: V8 k5 N/ i; w& N, tmodule_exit(led_platform_exit);
: m- z& O% {* ~- g% [$ ?8 S
, h$ U8 H: E9 v2 P' v1 ^. n- RMODULE_DESCRIPTION("Led platform driver");7 j, ?, T( _1 u$ i
MODULE_AUTHOR("Tronlong");+ Q& g6 I! |3 F6 t# c: ]
MODULE_LICENSE("GPL");
( U' A4 m; M( n8 I5 M; k
( e6 {0 N9 L4 m  j6 A, N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 23:13 , Processed in 0.037275 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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