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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
& k2 W) B' d! q' ]+ L. ?7 V#include <linux/init.h>3 {- S- P4 ~: o$ D( e9 Z  v
#include <linux/module.h>* }4 U3 K" W  \/ a8 D
#include <linux/kernel.h>
9 T. ^; q! j& M$ t2 U#include <linux/types.h>
  a) z+ d3 M6 S. n3 Y#include <linux/gpio.h>
+ P# O- b: y2 ]9 ?  t#include <linux/leds.h>
3 F( y( P9 u$ ~( W#include <linux/platform_device.h>4 F1 o5 Q& W8 u: t

4 W2 N0 g9 a5 P; C8 D/ g3 H$ G0 d#include <asm/mach-types.h>. ?8 U8 v/ g- \( q  \/ ^/ S7 m% X
#include <asm/mach/arch.h>
- e! \# T0 @' G; R* {" s4 R#include <mach/da8xx.h>
' }" Z+ P2 ~6 e8 Y0 ?/ p: T1 R1 p, p#include <mach/mux.h>
& _  ^8 G! r  ^( t' O5 k( K7 I" W/ _( ^& _; A; A7 b6 J; U
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)5 x$ i0 e. X0 o0 P( r+ ~% l/ |8 \
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5). Q; _+ a# ^; v" s
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
" F/ K( S% ?" Q7 C& _#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
. E/ s' K6 m4 S; ?( o0 @) T9 a) |% b9 h  W+ C3 P# E
/* assign the tl som board LED-GPIOs*/( T. _  r% L, _+ L
static const short da850_evm_tl_user_led_pins[] = {
/ K6 `/ @3 g& x. B9 N. x        /* These pins are definition at <mach/mux.h> file */, i4 J3 c0 S! `) [- w' F- ^
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
8 y& k# f- U1 V* d0 C0 x. [        -1& E+ d& _+ e9 s+ [% w
};
5 l0 ~6 w! Q/ T7 x4 o9 R
8 `! m3 m& W+ [' T+ Q  X5 T* Lstatic struct gpio_led da850_evm_tl_leds[] = {6 c( W  Y8 {  u, w1 ~
        {9 K9 T3 R, }) r& a/ M6 j
                .active_low = 0,
/ {  b- Q& K1 W5 h5 K                .gpio = DA850_USER_LED0,# O. `+ n3 `/ P3 ?2 c
                .name = "user_led0",
. q: I# A% L6 g! j6 _' ]% O* \' {                .default_trigger = "default-on",' T# Z: `' m. N% \, _: A4 j
        },, k! g5 i, `8 Y& _! D% p4 s
        {5 k7 z) S' S3 M5 L: z
                .active_low = 0,, H8 T4 f. o: R: ]. t
                .gpio = DA850_USER_LED1,
2 B2 L* ?- B+ x) W6 Q3 v                .name = "user_led1",7 p1 H( n/ K$ U5 u0 r+ N8 ^, N
                .default_trigger = "default-on",% d' Q; R4 ?4 d/ o
        },
& r0 i4 A9 r0 w* F4 [0 C3 _        {% ]2 q) m* k- {2 B  d$ e
                .active_low = 0,
7 v9 K$ s& e1 Y' E& P' m5 @* Z                .gpio = DA850_USER_LED2,
( g- I) Q. l! U( j: S" A7 o+ n                .name = "user_led2",
7 t: ?* o6 I# r. q                .default_trigger = "default-on",
9 E" m- [" X; ]( K$ g        },
9 Q; V$ ]  z2 \' [# X; q, W        {
: M5 w9 E3 X2 u$ P7 t% s                .active_low = 0,, a% Y$ j: s- v% z2 i% E% @) K4 ?
                .gpio = DA850_USER_LED3,& {5 p( P, O& c5 \* _$ N
                .name = "user_led3",
0 c% y' c9 m8 a, ?) p) [' |- V                .default_trigger = "default-on",
6 Y+ n/ r# @/ Z8 d        }," O' P8 W7 W% R; U8 v
};! Y$ {( Q$ Y- Z0 S$ o: \% R% C

; z1 b. i; C( @7 f  Ostatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
% Q2 C7 E" i$ \8 E' d  A        .leds = da850_evm_tl_leds,
4 Z6 s! s. c0 w1 a, h        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
) i2 r, G# N6 o' s6 A};( ^* E9 @, S  _7 s! J" B% X$ s# C# ~& y

: T8 Z# ?% j$ I- `static void led_dev_release(struct device *dev)( C/ |6 Z) f9 q
{
4 c1 i1 H9 s( X4 w9 e; Y0 L7 |) p};$ D+ E9 p1 m) x+ P& E% g+ {! g
4 O& W9 W, H" Z
static struct platform_device da850_evm_tl_leds_device = {
, U- m3 a* R) g3 [- Z        .name                = "leds-gpio",9 D. p& e; O) I& i) e7 Y3 `6 K# j
        .id                = 1,
5 }' C$ @  ]5 ]2 f5 A        .dev = {% c1 v4 m; i& g7 Y9 \
                .platform_data = &da850_evm_tl_leds_pdata,8 v3 }- Y( A: Z  `8 y
                .release = led_dev_release,2 p2 K; w9 a# R- [
        }
! R1 @9 a, t1 P) a& M};
8 D/ M- d8 n0 r$ p/ F7 U2 ?  ], ]& ~: Q9 z; a4 D* z
static int __init led_platform_init(void)  `8 w) q6 t2 @, n9 ^
{
& B7 `; M3 j) t+ T2 W        int ret;
( B1 `5 t, X" {& e# n#if 0
/ f& ^( O$ ~) d- A9 P6 @5 Y        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
& ?' @" z" T3 l. r/ j- [        if (ret)
6 Y" N% {2 x( Z# C: K                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
" J- f" @+ }- D: B8 b                                "%d\n", ret);
3 W2 D+ i" ]% b# v#endif
0 _' T1 P9 ~* ~/ W        ret = platform_device_register(&da850_evm_tl_leds_device);* B5 d/ [% N  ^2 u9 n' W
        if (ret)+ J: X. z  R$ H; y
                pr_warning("Could not register som GPIO expander LEDS");
! e! ]* w) ~& n% n/ ]        else
) i# r+ S% ~% O: t& }1 [. k2 {: ?5 N# _, W                printk(KERN_INFO "LED register sucessful!\n");: @- `( |; b0 ^, l6 f

" Y9 k  y: c% x% ~$ j! W3 F        return ret;. W- u& ]4 x# J3 A! |' C
}
" p. p0 W# d( ?5 w6 b2 U$ W" r; h' h* x1 W$ O. }7 _
static void __exit led_platform_exit(void), a3 l, ?/ e( j2 ]/ w$ B1 U: S
{/ N( c8 y5 B% w3 l8 c
        platform_device_unregister(&da850_evm_tl_leds_device);
+ I' p" p* @. m' \5 l2 S5 r9 d5 p/ J! ?) i
        printk(KERN_INFO "LED unregister!\n");
" j: Y/ Q  {; M8 L2 }3 S}
, H' x5 ^3 l" ]9 M7 v( [" X7 Q/ d& i$ f# c* U0 @; i& r
module_init(led_platform_init);' T2 I  R4 ~2 U& V8 B3 Z; ^
module_exit(led_platform_exit);0 i% [* Q$ z% P5 D% V/ A1 v' L

8 s2 D' C2 e9 v* ]& D# N7 o9 EMODULE_DESCRIPTION("Led platform driver");
9 R5 [. \5 o! T/ t6 Y/ kMODULE_AUTHOR("Tronlong");; ?: \! ]( W4 c6 X! b/ s. {
MODULE_LICENSE("GPL");1 C8 W7 ]- y+ O$ |) ?+ Q8 ~

. m8 N9 m' e6 F3 D& v& a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-24 08:16 , Processed in 0.046772 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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