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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。' ?" j! H, g+ o0 j$ N$ M
#include <linux/init.h>
& T  d# Y8 `8 u#include <linux/module.h>- s" }0 ]/ b$ a+ S* J
#include <linux/kernel.h>
8 J6 }, N* V# q$ Y#include <linux/types.h>7 I4 _0 k. b' m1 }) L0 s: Z, U1 q7 B8 s
#include <linux/gpio.h>
7 M% A, o- \5 L, ^4 a7 A#include <linux/leds.h>
0 {2 j4 f9 `# H& \# ^#include <linux/platform_device.h>
+ X0 ?+ H6 n7 A0 E% c' s  Y7 i* v) p% j" `$ |! u( M
#include <asm/mach-types.h>( q: _' |( ?, k% Z& h" J. [
#include <asm/mach/arch.h>0 z% @/ ~+ J" J, L$ p" H# V
#include <mach/da8xx.h>
6 \/ X2 A& C; S& O#include <mach/mux.h>) a! W; f1 J7 L8 q7 w/ p
( M& ?# G1 }+ o" y% y7 |
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
# p' v7 J1 }5 y, ^; d4 Z#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)/ C& K5 B0 I9 E* N9 ]/ n/ P
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
5 R4 U. B3 C! B#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)1 k+ D. j) h5 s: W+ d1 s+ l* Q1 A

/ g( F; W0 b; X) x0 A* c4 t/ E- w/* assign the tl som board LED-GPIOs*/0 f5 o0 C8 k7 t7 M
static const short da850_evm_tl_user_led_pins[] = {7 u6 P, v9 d: G
        /* These pins are definition at <mach/mux.h> file */& `% l" L5 j, t' o8 D0 J8 ?
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,& {8 I8 j+ ~& |( z9 P
        -1# T& H. J* I& t6 s! n
};+ i6 @3 F1 p  ~& \3 {0 l' i
: j/ C5 E1 b: w% \: X5 A
static struct gpio_led da850_evm_tl_leds[] = {
1 w3 B" C3 ?# m3 r$ F        {
0 R" o+ e! z4 J: g+ d0 C9 [8 d$ C+ ^                .active_low = 0," G& i0 Y7 m% v9 ]
                .gpio = DA850_USER_LED0,
2 W! B6 U8 ], S1 n2 m                .name = "user_led0",5 Y2 B, F3 y( P: N3 z- m- ?
                .default_trigger = "default-on",
2 j' X/ D0 A3 C+ l% o* T        },) a* S: r# y8 b$ g1 i7 P
        {8 F( k  K5 |; ^1 p( z( }+ i% _
                .active_low = 0,
* I9 B) a5 h! U                .gpio = DA850_USER_LED1,0 r6 l. g8 o/ j4 I
                .name = "user_led1",. z* D& P7 V2 j9 G! X+ R  p
                .default_trigger = "default-on"," [) \- z6 j) M: I8 u) o
        },
* K/ u2 {" v- g& r. m        {  U6 i! \8 @5 \
                .active_low = 0,' d5 s9 I0 M: a2 P* l3 e
                .gpio = DA850_USER_LED2,
6 u6 o( p2 w1 q) R  l* k# |                .name = "user_led2",5 L0 M  U# T- O$ G+ _9 I! g
                .default_trigger = "default-on",
9 \* g9 H6 Q% p4 S: ]        },
2 Y. w( F- ?; d  u: h& o' }3 j        {" ~! w" h9 b. J+ X
                .active_low = 0,
# `$ B! g: ~+ B4 y$ N                .gpio = DA850_USER_LED3,; W, ^4 H0 k* h& O; }1 D
                .name = "user_led3",
: X% m% ^$ R( j, Z/ ]# _                .default_trigger = "default-on",1 Z: u9 o! C8 s4 w: L: q
        },- E; J8 }6 n8 @" s8 ^4 k3 k/ X9 B% f
};% N' f, J2 l* X8 p, R

& x1 @# h  g  X, s8 D/ ?static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
1 X) ^. W+ w3 ]        .leds = da850_evm_tl_leds,
% H: H* y7 b3 |! Z, ~; a/ u5 o3 M        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),( x: \: y" M* T
};& U) z. Y, S" \+ E
4 ~3 J9 H7 A$ n3 Y( ^" w6 S$ Y1 i
static void led_dev_release(struct device *dev)5 O: w4 M! x% I! t9 k7 f* J
{$ @1 G  x& H$ d  [9 R  I
};2 x7 P, @3 t/ Z
. T% ?; u' c, r: Y
static struct platform_device da850_evm_tl_leds_device = {8 g; C; I5 ^0 c
        .name                = "leds-gpio",+ Q# K4 q' K. a+ |3 B7 C! M
        .id                = 1,3 n  L4 k) ^+ H7 R; N
        .dev = {- n/ R+ t6 K( V  _1 d; T
                .platform_data = &da850_evm_tl_leds_pdata,/ G  O. X+ ~1 l5 Z
                .release = led_dev_release,2 q4 p% L$ J7 s& f" e+ D6 g+ d
        }
, N0 g- i9 \" w2 l% W6 H};2 h2 ]$ x1 i4 t& c) G8 y
' }/ F- H8 v/ r. p
static int __init led_platform_init(void)
+ `( o$ C' |3 n& T{6 |, R$ a7 c$ D
        int ret;
5 A$ x' Y% G. [6 i: b: X2 @#if 0
: K7 ~9 N* V; b        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
$ X4 S5 U+ w  V* V) \! ?: v        if (ret)2 ?% `( H2 C2 i$ d" Z; v
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
1 e7 @6 s9 f  b0 y8 V                                "%d\n", ret);$ S; w# }2 k9 g
#endif% L3 i& V. c# s
        ret = platform_device_register(&da850_evm_tl_leds_device);/ N! \# W& W8 N: W& E/ u- x
        if (ret)
; c9 C$ _3 v. F% F3 a, M                pr_warning("Could not register som GPIO expander LEDS");
" n  \1 k7 w( y; h- _( }        else2 z9 t% w% R: j5 T. I, Z
                printk(KERN_INFO "LED register sucessful!\n");
: J& K6 E9 K% N- X; U0 G- ?& q) P* V: `7 i( R
        return ret;) f3 j' Q) P5 r; Y5 i
}
2 l' r3 I7 h; l3 K, h/ k
* j7 g. v  w% Z! \( ^8 Sstatic void __exit led_platform_exit(void), K- s; u- f- u; ^# _
{5 S, J3 t$ |9 i. ?/ l9 o# J
        platform_device_unregister(&da850_evm_tl_leds_device);
: |% Z4 h- f/ o# P. H1 o" x& n7 Z3 {& H
  U2 g6 x9 n& k/ J9 B$ M& g, _3 W        printk(KERN_INFO "LED unregister!\n");
, `5 R' _. z3 f  n$ ~  F0 |0 z}
1 f; D. z7 x5 N* p1 K! |9 v% [7 f) l; e  {: d  l/ l0 U; @0 C; v
module_init(led_platform_init);* V, b( c% \3 n2 g9 t& W1 F
module_exit(led_platform_exit);
" C, S4 S$ W! v) A: Q0 i8 f% G; L; ?1 q$ D; H  c
MODULE_DESCRIPTION("Led platform driver");
3 F5 u9 q6 g+ nMODULE_AUTHOR("Tronlong");
$ a  Y8 P8 W0 S) B/ R1 PMODULE_LICENSE("GPL");
% ^; j: w) H) F- w6 L# v7 V2 H* I& g4 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-24 10:15 , Processed in 0.041323 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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