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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
! q8 U4 v: e1 {#include <linux/init.h>
3 _: S8 X: L! L; c2 ~2 s% h, K#include <linux/module.h>) ?/ u9 Z2 ]9 f, W# _' l$ t
#include <linux/kernel.h>
, G7 s: F; I6 Z8 o$ k6 X# P: ~#include <linux/types.h>
/ J6 x( p7 z( b+ B" t; O+ T#include <linux/gpio.h>' K0 {* q; n+ W1 R' {" E$ T* P
#include <linux/leds.h>& y/ ]' n2 `/ m+ D; W& Z
#include <linux/platform_device.h>; v  l7 v# K2 h5 u8 J  V$ N( y

0 `- a8 i' j0 l' m; B: F#include <asm/mach-types.h># D8 G* |7 u0 q$ y- W( `
#include <asm/mach/arch.h>
0 @4 K$ @2 u, f( r  x. Y#include <mach/da8xx.h>
, t8 o" [, f( T( Z) W6 C#include <mach/mux.h>' X0 p0 {1 R- N/ _) n; t' P
! L, E3 m3 ]4 t  n* {4 Q
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0), X5 [8 Z- y! T; b- t6 }$ i* }
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)0 R8 y. ^# Z- w' @4 k1 q
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
; B2 ]: ~. N6 d. J#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
: o5 L7 L" j  {8 v" O* D- k0 U8 C/ |- c5 z6 W$ j3 n6 i+ b1 o
/* assign the tl som board LED-GPIOs*/
6 H% l! X1 k: e6 `* Xstatic const short da850_evm_tl_user_led_pins[] = {
8 A  I- Y) U" s0 J) u        /* These pins are definition at <mach/mux.h> file */
; d$ j- a. I2 K8 L9 E0 W9 Q4 N        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,( x! j: f" _8 S
        -1# |0 z% t: w6 V2 A3 j/ W
};
$ q5 l9 Q+ R2 p# d& N" a* C# T3 l- E8 M! e, w% e; R9 q: A
static struct gpio_led da850_evm_tl_leds[] = {* Y4 S3 `+ q9 Q( e& a+ b* U' y4 |$ f
        {9 i" }- F( N/ Z
                .active_low = 0,+ n, l' ?; M; T6 _* r
                .gpio = DA850_USER_LED0,
( R# A, a- u! U! \- y) }. @. J# c                .name = "user_led0",
/ J# X2 h- U; V! K+ p& W3 Z; Y; d                .default_trigger = "default-on",
* z3 |" `8 @) ]; ?( Y) I+ _* w        },. b/ w7 i8 @4 v: N9 Y/ ]  F4 s
        {5 J9 H" O5 z1 b. o# X) I/ Y
                .active_low = 0,2 H# I7 Q& }5 ~; U: w
                .gpio = DA850_USER_LED1,
; m3 Z1 D6 a  n# a9 O# s3 v                .name = "user_led1",
/ q; y0 N6 D+ M, [                .default_trigger = "default-on",
6 Y/ Z9 A8 @$ X7 Z* s        },
5 X* m& [9 y2 \4 C2 n7 L' l: i' g        {
; h! {) [6 `, M8 u8 [' }  z' o                .active_low = 0,8 n2 w; i  y6 R0 u
                .gpio = DA850_USER_LED2,7 g# ^: F9 k8 u2 S2 f, y
                .name = "user_led2",3 A6 x; _! m- ~$ b* ~4 h1 Y3 f; \
                .default_trigger = "default-on",6 y$ R; t) A3 P# g* b' X
        },
; o7 {8 r; R. v' k5 B% q7 L# B        {
5 O: r3 B' w8 V                .active_low = 0,7 y) {8 g/ k  Q, Y5 n; m. ^; D& S& [
                .gpio = DA850_USER_LED3,
) R5 O& \1 s( o" G                .name = "user_led3",
# Y2 b8 H4 y& D7 X! P/ k                .default_trigger = "default-on",: h+ B+ i5 L. h  o" J, p) P
        },
/ l3 F& O- b$ P- |4 s) V};
) W, F$ N6 u, @  l4 Q* [5 R) Q" k( E( Y% @* l; g/ u% }) z3 a
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {3 W& \* |. \7 r) x  m0 A# d
        .leds = da850_evm_tl_leds,
8 v( D$ [! W/ g9 v        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
$ ]1 X$ |- s7 J# p) H};; L2 r2 ]4 b6 G6 M9 p

0 P; L6 u" r0 Z/ Ystatic void led_dev_release(struct device *dev)
1 o8 E8 ~- I& R{
) F5 k& {( n) R};
! F6 b1 ^" `  i1 A1 F" k
& B" ?, W) i% ~- o, s0 estatic struct platform_device da850_evm_tl_leds_device = {$ ]2 K7 V6 ]& P. B
        .name                = "leds-gpio",2 ?8 q; [& C$ J% A! M: n" o1 F. a- L! {
        .id                = 1,
4 J9 [" D2 N* Z7 i1 u, w        .dev = {, ^& G7 g2 i' z2 s: N! c; l, i
                .platform_data = &da850_evm_tl_leds_pdata,
; u1 j  g8 n& k9 Y5 \* R                .release = led_dev_release,- x1 {0 g7 Q2 J2 n/ g
        }
+ `! ^- Y- |; O* F; U};* ?7 c* Q" n, B0 L1 `
3 a' H+ v- b7 Z* k/ ^" \
static int __init led_platform_init(void)* U- C3 ^! [6 c3 X. p2 ]9 a
{! Z& o' C& m9 F. x: Q- d5 `
        int ret;
" v& F; i; a/ ^: p# i#if 0
/ R+ [) C% {# i0 n        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
; m, A1 a; O- h4 ?4 K1 m        if (ret)
: P0 ?& c2 {1 L4 V' L" F                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
8 c5 h5 z6 w7 B% H* t                                "%d\n", ret);
( d; ?  Y( ^1 T+ E1 O4 U; p#endif
4 v8 Z2 P0 q; |" F        ret = platform_device_register(&da850_evm_tl_leds_device);
1 O+ i4 V( Z. W" X& S2 W        if (ret)
6 G7 U% g9 s' O7 F  v                pr_warning("Could not register som GPIO expander LEDS");% A3 f' f* w1 Y: A+ n: S
        else
( c" P( \; q7 s; V/ j4 P                printk(KERN_INFO "LED register sucessful!\n");
7 A* ~( D) D7 y4 m* y2 V2 Q( l. `3 V0 O; x5 @6 w( D% S% u
        return ret;
5 O  p6 G" O/ a" w' M}
: s8 \0 ]0 ^' o1 O" H- E' W' F$ l% Z+ V
static void __exit led_platform_exit(void)
/ ?7 n9 @- [0 w5 a  [6 Y8 B{0 O/ z$ Z$ I' l! i+ h
        platform_device_unregister(&da850_evm_tl_leds_device);
5 [- H/ e& w" X# I1 j! k3 c$ W  k+ {3 D+ s  }! ^
        printk(KERN_INFO "LED unregister!\n");* @, P: B8 ~" z& ~4 n
}
: x0 H* _" H. ?! [
4 V" q+ n# N3 W& m2 R0 omodule_init(led_platform_init);
3 N) j% c: x3 d, \# Q+ Cmodule_exit(led_platform_exit);
0 U+ }! T! ]3 P- ]6 [" ^1 g( u4 A# `' j  o4 e8 F
MODULE_DESCRIPTION("Led platform driver");+ G2 m& t3 y0 j9 f+ ~1 ~3 A
MODULE_AUTHOR("Tronlong");
0 K9 |7 V% e4 Z: }1 L/ A% P0 x  p2 f( C6 j% DMODULE_LICENSE("GPL");( `0 w7 L( G9 i( c$ n6 [
/ _5 P1 e3 L8 [  ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-13 21:17 , Processed in 0.037942 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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