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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
5 _6 `' D2 n3 I% Q8 _. r- d+ ?#include <linux/init.h>
: B$ E- {4 \7 M9 [#include <linux/module.h>
! f) z9 a  W" i0 j#include <linux/kernel.h>
( p' M  f1 O' c' T, K) m% I( x; B#include <linux/types.h>, w& k) F1 ?- L" f8 j1 L
#include <linux/gpio.h>, \& y% u: _) {
#include <linux/leds.h>
1 Z8 @! [( q6 ]4 i#include <linux/platform_device.h>! y: R2 h# F* ]
, x  r7 }+ E) W) {
#include <asm/mach-types.h>) s" X( ?. ]5 ^+ E7 a. H- O2 m" j+ W
#include <asm/mach/arch.h>7 |7 k0 _0 f$ r$ _& {9 ~" g
#include <mach/da8xx.h>
3 y1 ^: [5 k4 F: ?# ]  d#include <mach/mux.h>: J( O: S# x  P! P2 r* k) O; d
" y( z0 v! f6 t* j% H
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)* I5 z. U2 S! X1 N2 }) y( f3 I
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% u: b: O% T8 P, M; P  T, d3 S$ S
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)0 P! W1 s' L8 L; ]( g$ r$ d* L
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)& f6 N% i& m3 T8 ]6 {7 }
: r3 G% V9 R+ T/ E6 R8 ~
/* assign the tl som board LED-GPIOs*/2 z# L& T# j  w1 o9 `" `
static const short da850_evm_tl_user_led_pins[] = {
- }# o: u4 m# C# P* ]. K0 s. i( a        /* These pins are definition at <mach/mux.h> file */
. n! k2 a& g( g$ X$ ^        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,/ L8 a5 z1 n  C1 W5 ^4 g( C6 j
        -1: H# E% J- ^9 N3 e
};7 u6 C0 M; K1 U

  Q8 W. ~1 e. X4 C: D5 astatic struct gpio_led da850_evm_tl_leds[] = {
4 p  M, {7 I% ^. |' M& p        {' ?% {: {1 A# }: n
                .active_low = 0,  j. q$ ~+ m+ Q2 R  Q% `9 ?
                .gpio = DA850_USER_LED0,
+ l  }. v. k6 }: l' W                .name = "user_led0",
* m9 [5 m( H! _) j                .default_trigger = "default-on",
* T) b- U$ Q$ {6 Y2 y9 L        },1 k" w+ p' `4 _2 C- t' z
        {  q+ R% n, A; [3 `3 t
                .active_low = 0,
5 S5 O3 ~0 D1 R  A                .gpio = DA850_USER_LED1,2 G, b: v* E; e% B
                .name = "user_led1",, R# R2 i, E7 Y% p
                .default_trigger = "default-on",
  A" `3 Z$ @5 g+ g        },1 q3 ~/ D: k6 D( K% J% F* y6 P
        {1 f0 m. _3 K& [, I4 Q
                .active_low = 0,, {, \0 r5 a0 L; x; \
                .gpio = DA850_USER_LED2,, l0 b( d* ]  y3 l" q0 j* J: Y
                .name = "user_led2",
1 t# c) ]1 r% F                .default_trigger = "default-on",
6 ~; |7 b2 V& I% Y: I        },
# ~8 b; p6 l8 Y  S" s% H& p5 C2 a        {4 L! @: J4 n( U* c$ m& y0 _
                .active_low = 0,. `( @$ |7 M6 m/ O
                .gpio = DA850_USER_LED3,
* w8 L7 Y+ x4 b2 s9 J7 l+ U                .name = "user_led3",
6 s  w6 J9 c! |2 A                .default_trigger = "default-on",0 M" Z5 M+ Y5 Z- J9 {
        },
% ^9 ?" y0 X4 o! [% B, ]* y};  L" w4 v4 ]+ Q- J

/ i% J3 P. F2 A& |, e  Tstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {1 E6 H7 a0 _% j+ G6 [3 l
        .leds = da850_evm_tl_leds,
: O, d- j1 s0 P1 e0 o/ B9 ?        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),; j( r) g8 l* i  ?
};
7 W# P6 Z" X' F# d! S6 m+ J5 e# k1 J, }6 Y
static void led_dev_release(struct device *dev)
& ]! x1 K4 r# u; }{5 w6 |- U: }/ _4 |6 y; `: y
};
$ }! A3 m. ~/ ~) K
: Y5 K7 l1 N9 B' H. ]' _2 l5 ^( ostatic struct platform_device da850_evm_tl_leds_device = {: X( {. S, |3 ~* E7 S1 E2 _" [
        .name                = "leds-gpio",* }; T- Q' l) X- ]. ?( f
        .id                = 1,$ Z9 ?2 a8 p: ?9 p, h2 `7 C
        .dev = {# z9 x/ n' v! z- s$ u; a' v0 M1 o
                .platform_data = &da850_evm_tl_leds_pdata,6 A9 K5 q" |/ }) [6 Y
                .release = led_dev_release,  ?% k* g- ~" h' O% m. c/ R/ @# V+ i
        }
7 t# N" Q( a' Q. w& \};. F$ r) g' T& {9 T
: G; g) l/ ^6 M7 [) ]
static int __init led_platform_init(void)
( u" n; K& }5 t$ ~" g! t8 ?! s5 i{
2 m; t, t6 N1 j, e3 N; l* e/ d        int ret;
2 r  {2 F) l2 l% i/ ]#if 0
  M- c- Y7 u+ ^( P        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);& Q- ^7 {6 {+ D# V1 C
        if (ret)
  [8 P( o& ?+ F4 s" b. ^                pr_warning("da850_evm_tl_leds_init : User LED mux failed :": h3 T. |% ?% r% ^+ h, \( o  }
                                "%d\n", ret);
0 ?( u2 `' j$ d' b, w#endif- e" B! S1 }$ X) J+ q
        ret = platform_device_register(&da850_evm_tl_leds_device);
! I( ?4 r/ w1 q' Y( p1 I+ q8 M7 _        if (ret)
; ?3 J9 L1 d9 N5 Z                pr_warning("Could not register som GPIO expander LEDS");3 A9 i; e& n  B) r
        else
. j5 T  E! R( {- W" L6 a! |                printk(KERN_INFO "LED register sucessful!\n");
- W# _0 U. ~$ x  L% ?+ `
# i8 K& Q2 d7 }1 Q8 e6 p        return ret;
: }& b, b: k8 `2 M}
9 p3 l& t* T3 Z. L! D7 `* t3 n& W! I0 Y+ R7 K" j' W
static void __exit led_platform_exit(void)
# H2 A6 l1 k0 P- [{
2 }% K! n- v" a  C4 q' B/ I) |        platform_device_unregister(&da850_evm_tl_leds_device);
1 Z: `$ o0 }, }' u/ w5 ?: e* e- w6 w/ V7 d+ {
        printk(KERN_INFO "LED unregister!\n");
2 M# R1 R8 E! K. ?7 b8 C2 U5 L0 v2 e5 E/ W}; @( k( |  x0 \1 ~' d4 |
* R! K& {/ ~* _+ \* x
module_init(led_platform_init);
3 z' j& G- T/ R4 f3 p  o$ qmodule_exit(led_platform_exit);
8 b6 P; b9 v- f2 ?# _3 Z, W# \: o5 ?2 _& m9 V. }% c4 k
MODULE_DESCRIPTION("Led platform driver");% l% o, X% O; Z4 X% l
MODULE_AUTHOR("Tronlong");
9 i8 O- K- I$ H6 P2 Q. u7 `MODULE_LICENSE("GPL");; T( i. D! ~( j! g

! }1 X3 S. ]3 K& H1 V" a7 X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-14 19:28 , Processed in 0.038592 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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