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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
; a  i" X8 W6 ]2 `0 o#include <linux/init.h>
" K2 c. H. b$ e: R& R! q9 K#include <linux/module.h>
0 L! Q9 o" N5 {) O0 G5 m#include <linux/kernel.h>( C& B; I7 V- f/ u% F8 G
#include <linux/types.h>
$ F) h( l! K: V/ p* w#include <linux/gpio.h>( ]# A# x! w( ~) B4 S
#include <linux/leds.h>
) }5 s% ^4 L* B8 L; B0 ^9 R' i#include <linux/platform_device.h>
# C! u9 X0 K# t, t% ?' {! s3 h  X( C. X  V* c+ _- ]
#include <asm/mach-types.h>
$ {# c# C) u, b#include <asm/mach/arch.h>6 U7 z. l$ Z1 y# |5 a8 J
#include <mach/da8xx.h>
% }5 U* }& d5 V/ y4 g' W" A9 w#include <mach/mux.h>
; V( r1 X/ r, z8 F5 U" z1 }% [3 E4 B! B- t0 [4 d/ f
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
! p8 ]: ]8 D: g: ]7 ]) c8 u#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)* S3 L$ G) h0 g* ]
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
: ?, ^% R2 O6 {/ |* z  g7 k3 L#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)4 O( }1 c3 B- r. u, c9 l, F1 Y
: q9 f8 {7 a9 A, e+ I
/* assign the tl som board LED-GPIOs*/2 k4 r) p8 m+ h, r( F
static const short da850_evm_tl_user_led_pins[] = {
7 f1 B8 B2 i9 }; C+ o. Y        /* These pins are definition at <mach/mux.h> file */" e/ @, D- R! y) H
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,/ {3 D/ r# X0 g* j
        -1/ j' o# s+ L2 N5 y+ W. e
};
4 @$ r& f+ F1 H- a% |4 Q
' h4 O( A1 I2 L1 i) Q5 D. @! \static struct gpio_led da850_evm_tl_leds[] = {
* R8 [6 k8 o) J8 \6 E* w+ n        {" u4 _3 Z( p: r1 U" I, }- }- j' r
                .active_low = 0,2 [9 _' H. Y0 |" j3 {. C1 |) X
                .gpio = DA850_USER_LED0,
$ n' i3 X+ H6 u& I                .name = "user_led0",
. S. D( b5 L$ f                .default_trigger = "default-on",
/ i4 g/ a* ?: U& U5 E6 l  O        },# _" y$ X7 v$ l) T6 ^/ {& _1 e
        {. }1 p/ X) s3 G! n
                .active_low = 0,4 N- e6 R) q; L- G; |
                .gpio = DA850_USER_LED1,
, V1 m7 r5 ]8 C6 G" W                .name = "user_led1",  l! i! k$ A) W. B/ G! O9 @
                .default_trigger = "default-on",
4 }& V# m7 |7 B. F% P% F) [  Y        },7 o) R+ u% p2 h  N; z
        {5 `! d' D& m, [) I: H8 K3 S
                .active_low = 0,( Q$ e- C  }( d/ g! Z) ^* X6 ]7 z
                .gpio = DA850_USER_LED2,
( G8 H+ k- b5 S6 k: }$ c( i                .name = "user_led2",
- j5 v' Q% }2 ^3 i/ U                .default_trigger = "default-on",( p! ~8 l- R1 S8 h% N, r; {0 ?$ |
        },
7 h' E  c( W9 u( D( ]' V        {, P: E! V7 ]1 z# }( S; ]0 {2 M
                .active_low = 0,5 L* X* D# g  J$ L* F( X8 i4 ?, e
                .gpio = DA850_USER_LED3,
; J5 L4 ^7 U2 D6 N; M                .name = "user_led3",1 U, @2 T( A3 P# p
                .default_trigger = "default-on",
2 p$ u# H2 F$ d% m9 m+ b  w        },# j8 [) F: l- V9 S9 f, |& M
};
0 f0 A+ k& @6 X8 D) t6 J$ d0 w3 V6 [0 ~- l# G! B5 U/ k4 y1 g; Q
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {6 x. W7 Q7 r: \1 Y8 R1 v7 P
        .leds = da850_evm_tl_leds,; m+ w- \, }4 m7 e: Q; K" J
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),- o- C2 N8 C; q$ Q
};* H- Q  {  h4 G6 J8 L

4 r% N3 K" D# h5 t, gstatic void led_dev_release(struct device *dev)
6 B8 \* P$ v: E- r* k' t{  ]- H8 h9 E) Q/ W6 D
};$ E( @4 p5 Z# D5 Q9 F# m- K/ o
6 U1 ?) j) F# e2 y* S" e
static struct platform_device da850_evm_tl_leds_device = {
8 z2 V% ?( v+ d( z' J. k        .name                = "leds-gpio",
4 J( P+ V3 r$ V, k" A) ]! n        .id                = 1,8 h& n1 T! K# a! F
        .dev = {
6 D1 ]) Z( m1 V2 a, @: ?! R$ C' s                .platform_data = &da850_evm_tl_leds_pdata,
. i$ G( |' e* n8 P' T1 |& R                .release = led_dev_release,
+ E1 `5 @% }. N" a. t        }
6 C, a; U& e: W};2 N' L* p$ C- y% [5 n% ]

$ ~. L4 P6 x7 P0 k) v) Ustatic int __init led_platform_init(void)
! \# ]6 `, H; o# q1 w* E: \0 N{
# J: J7 s& b3 j' y1 H/ P" K, v( C        int ret;
0 l0 q. B5 k& B5 h3 y#if 0
4 D7 z1 U4 {! ^1 l# z* A% W6 H4 o        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);% t; T. b" b8 w+ V  e8 E. H; g
        if (ret)1 ]4 j3 W% j. E& E& _
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
0 A2 ^; \; P% O2 G5 J# @                                "%d\n", ret);6 r% t# K* x! q$ _2 V+ f& ~2 @
#endif
% H. f5 F5 Y* ~- O8 k" R        ret = platform_device_register(&da850_evm_tl_leds_device);
; ^, \- b4 S6 N5 @+ i8 C2 ]        if (ret)$ q+ |  F+ W9 }5 O0 k( A! M
                pr_warning("Could not register som GPIO expander LEDS");3 |% p6 n$ o, _3 T1 z1 y
        else* q, B- A9 h  w* K  |( I
                printk(KERN_INFO "LED register sucessful!\n");& T/ l# U$ L$ s, g5 W" A$ k

/ X: Q- O$ _, h1 l! V$ g3 F        return ret;
! W  d0 v9 o# I1 j$ ~+ e" P2 t}. |1 c- R2 L4 O/ I$ b) T) `

* ~% m' c# f$ H; J! Q; A! C4 Rstatic void __exit led_platform_exit(void)6 e6 O  ^9 `& ?/ O4 c7 v
{
+ g2 [6 d! i1 W" l/ B        platform_device_unregister(&da850_evm_tl_leds_device);
1 |* n; c7 d. a4 ]
" ]% g5 I+ }; t- B" o        printk(KERN_INFO "LED unregister!\n");
$ z8 z& [4 b7 ~2 T$ @# @& A}! S( u: s1 r  v9 d! T0 I
" i& R# U2 a+ f  @: z2 [# O
module_init(led_platform_init);7 |1 S7 x" N( V& g* I& i9 u% B
module_exit(led_platform_exit);; |5 T( t7 s$ |) D. @. E8 C1 R
: g) ?& ~% H  t
MODULE_DESCRIPTION("Led platform driver");% Z' K3 e4 M  q7 Q3 s1 X" ~
MODULE_AUTHOR("Tronlong");
$ a, }; w( T; g" k  A, R' R# k' kMODULE_LICENSE("GPL");
% ]8 ]' r* Q. @! K2 W$ F& L
- u2 I" b! ^, q; j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-21 08:14 , Processed in 0.040540 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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