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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。& y$ z. o% b: U; T" Z
#include <linux/init.h>% s# e7 f) w. D/ g5 V" P2 E4 Y
#include <linux/module.h>. x1 P, w+ i) E/ e3 Q
#include <linux/kernel.h>
, L# K: T$ H( a#include <linux/types.h>
- A$ |# n0 y9 S$ X& Q#include <linux/gpio.h>9 J* l' v; Y- P6 |. @
#include <linux/leds.h>
0 D1 p4 q7 B1 |" j3 ^) W$ y#include <linux/platform_device.h>/ a- \5 n5 L$ K) r  V6 f
- z% j( t+ N8 G
#include <asm/mach-types.h>! o- ~8 Q  w* _) e/ l+ H) z/ C) X; Y
#include <asm/mach/arch.h>
" r# c* Z& d+ Q! X* O#include <mach/da8xx.h>
! g5 e  U% Y2 n; B* G( I% G/ i#include <mach/mux.h>- w2 b9 ~, R! v) V4 g
! M' |1 k2 d" ?) b
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)& I" ^$ r, |# e& J: A- ?& e
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
5 z1 H' b6 S) K- z, Z#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)+ f5 p+ C, ^0 t( s" e+ ]
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
: D  g9 u# {% Z+ h/ n7 E. _" h: C% i6 N5 v/ e: ?
/* assign the tl som board LED-GPIOs*/
2 g4 m6 D5 r+ G* O1 S) lstatic const short da850_evm_tl_user_led_pins[] = {* g% Z; T1 S9 o# u% d' N& {
        /* These pins are definition at <mach/mux.h> file */) W& b6 `- L) [  C. e1 x1 y3 }
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
( p6 e4 q2 Q! j. H        -17 e3 P5 P& ?$ N% @) k- N# K+ K  U
};% \" p% t+ l$ |7 k1 m
& T- p6 G- t8 E! ^+ q# V
static struct gpio_led da850_evm_tl_leds[] = {
0 ?; H& k) v6 j& |0 i3 I        {
) D, H$ k& L1 E) w- O8 b                .active_low = 0,/ J) B* X$ U6 i* a  |8 {
                .gpio = DA850_USER_LED0,% Q: l2 L% g( }) C6 q5 M3 ]. O7 @
                .name = "user_led0",# \4 c9 @, t. v6 y1 Y& [
                .default_trigger = "default-on",
: m# l# t' w9 m$ k8 l        },) ~, t  H' ~# m* ]! U# C* p
        {
2 X& d2 j4 Z* x" n: [- K                .active_low = 0,
; W6 m2 G+ t, p' P- E                .gpio = DA850_USER_LED1,  n/ B+ [( i% {  S1 h
                .name = "user_led1",& \# O. U5 o0 r
                .default_trigger = "default-on",
* X- `0 b# S. ?( R+ Q        },8 T9 z# W# N; r9 ?# B7 o6 X0 {
        {! x, w4 c% h! V/ \7 A0 @
                .active_low = 0,
' s7 p* v! \4 `- r                .gpio = DA850_USER_LED2,$ D9 {9 O+ H4 F# G
                .name = "user_led2",
7 ?( y. L- p0 C3 ^8 Q3 ^7 j! \9 S$ W                .default_trigger = "default-on",3 X9 T; |& G6 M
        },  x: |9 R. y; C9 J0 j; |
        {) d& a4 a- P* A0 h% A& o* c6 i0 W. U* b
                .active_low = 0,
# f4 g% \4 C7 x6 k( C                .gpio = DA850_USER_LED3,
) S" {' k: Q6 g# p4 V                .name = "user_led3",
! y# B8 ]# ~% P, _  M$ A* j                .default_trigger = "default-on",/ W7 b' [% `" L8 [$ w: T2 O+ H
        }," w# C# T. N4 i# M- l. l6 y" T
};, Y4 v) \2 T* A5 c3 \" m, M4 [! L
, s8 |) _% N- x% o
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
6 n+ w, j  l& T5 ?) C7 [4 |        .leds = da850_evm_tl_leds,! s5 t. q+ m) {  E! N6 P
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
1 N6 @; B3 u' b: ]& _$ q4 v: r};! h& T( }. O5 v( B$ U0 H/ g
) |' H9 L, h% t: t6 y
static void led_dev_release(struct device *dev)7 Y3 q* y! {+ V2 r5 c3 }( Y
{
8 f6 r3 }, m9 Q};/ @$ o- s$ g' |: j) u7 l3 y' A
* k+ v" ^. S; {
static struct platform_device da850_evm_tl_leds_device = {, }1 {7 }/ Q0 d% h# f) H- J/ o' Z
        .name                = "leds-gpio",' g# W9 Z% n2 P" x( U7 u) N3 e
        .id                = 1,
$ L2 `7 {  o3 Z( Y' W. `+ r1 a6 G        .dev = {
/ x" g- F2 c) E                .platform_data = &da850_evm_tl_leds_pdata,
: b, e$ y2 M% m+ V1 d  M- d                .release = led_dev_release,; R$ x% E5 C4 ]" h+ e' K/ f
        }
1 W8 X5 A* f) \, J( W};  C- J0 Z$ b9 B

  d, X; z0 m2 w, e1 D( P2 Gstatic int __init led_platform_init(void)
5 {$ c; V0 D5 [4 f2 `* W' [{
- K! L3 j% ?5 Z! Y        int ret;& R6 @8 k& n* ~  [
#if 0: u  R( X9 W: K* X! B! w
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);; w7 {1 r5 \5 d& S/ e+ B6 S- c: \
        if (ret)
! c5 i. s; b1 }  b) X6 c                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
5 |- C1 ]& Q; @  S4 W8 w, v  }                                "%d\n", ret);
7 @, [$ h9 z" Z: n#endif
6 I, w! M, x1 t8 U3 }& v% E        ret = platform_device_register(&da850_evm_tl_leds_device);4 H+ w, r! y9 |9 R' h) e
        if (ret)# O+ @: U* ^" l2 N, P8 [8 a, Z$ Z
                pr_warning("Could not register som GPIO expander LEDS");
5 Q' c1 G: z5 i        else2 U; e" `: A3 ^, o. j9 l
                printk(KERN_INFO "LED register sucessful!\n");: L7 h+ Q: u8 X% `# H6 [  u
! i7 |+ r- U7 H) z, [
        return ret;
9 a8 N5 G2 R3 b( g}3 o/ O" Q! R: y! Q9 k9 n

" g- F3 G/ [1 ?: b% y( F) |) u% @6 ystatic void __exit led_platform_exit(void)
& O! \) f5 X6 {; l, ?{
1 i% a. K9 o; b+ p8 z5 j8 T0 _" U, N; c        platform_device_unregister(&da850_evm_tl_leds_device);) L7 ]+ s1 v  @4 ~: h4 v# m8 W2 Y. h' b

" N* m9 C: G6 r        printk(KERN_INFO "LED unregister!\n");
( X* A  p* N7 ]( f# B}' E: E6 G! _, p( W& M# C
% ?, _; I# k' P) ?" Z; b& r8 ~
module_init(led_platform_init);9 v% k6 I3 ^3 j3 Y( G
module_exit(led_platform_exit);
  P- `; U  e; [) l! `5 }
; e6 l# X/ ^$ \! A- A! JMODULE_DESCRIPTION("Led platform driver");+ m2 l0 |9 p1 I0 q
MODULE_AUTHOR("Tronlong");
# w4 b6 A& s# ?MODULE_LICENSE("GPL");* H8 L2 {7 W1 t- R5 O

" N2 u, m- U, J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 16:07 , Processed in 0.039152 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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