程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
: \- m, K) C' y: i  K# l1 x+ e#include <linux/init.h>
# Y; v9 y% y6 Y#include <linux/module.h>
+ h9 l: |1 r; Y* m7 V#include <linux/kernel.h>! s% e& A/ Q1 f; a* K
#include <linux/types.h>1 B) N7 B: w; s8 L& K
#include <linux/gpio.h>, o1 d5 h, }' Y$ B+ e4 t! ]) V7 r* K
#include <linux/leds.h>" ?4 V# J+ G9 P# W/ f
#include <linux/platform_device.h>9 H, ?% E: i) g# f+ m& _$ ]& |

( J4 }: q% C5 E5 T' q3 k5 {) K* O#include <asm/mach-types.h>
) L" g8 O0 N$ q  }5 z. E* w* S9 i#include <asm/mach/arch.h>
& Q8 k/ }; Q& d, U#include <mach/da8xx.h>
3 e2 d6 L; f+ C! _#include <mach/mux.h>$ \/ T) s( M- k7 Z, Y. x2 U( C

* \" m3 v: J+ ], N( P6 _#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)2 U4 f* Y  M2 ]
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
+ |$ H8 ]3 }+ u- N#define DA850_USER_LED2        GPIO_TO_PIN(0, 1): v: Z: p2 c% A- C+ l
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2), w: Q; g& X0 {  ]! p, ~  S

) _! i9 i: ?' O/* assign the tl som board LED-GPIOs*/
6 Q6 c% r: a5 U  h6 T* Lstatic const short da850_evm_tl_user_led_pins[] = {
- i) r. F6 r# r) Q6 o. e        /* These pins are definition at <mach/mux.h> file */9 j0 o; h  z, E
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
6 G( m3 G9 }6 e4 M1 l! @' m& @: a        -1, [$ G# Q; a$ p& W2 x
};9 S6 E- K5 @+ @4 c* ?" w

" y8 o8 L% L2 _" Zstatic struct gpio_led da850_evm_tl_leds[] = {0 m+ |( |2 [2 T* c) H6 J. f: _
        {# A/ }  {! |* O
                .active_low = 0,- {2 e2 z8 d4 K- C: i
                .gpio = DA850_USER_LED0,
1 x; {3 ?5 t6 k. b0 L" R                .name = "user_led0",
: c2 Q0 S5 B* v. z' \* F                .default_trigger = "default-on",- r; e. [2 a  _2 S& y1 s& J
        },% w1 g" K/ @9 S8 C& {
        {
. n: N! P! ?4 X. R  ]                .active_low = 0,
- f8 ]$ M$ _! x  b: [9 D                .gpio = DA850_USER_LED1,/ e& x1 E6 @7 o% x4 q
                .name = "user_led1",
$ C3 Q6 D* |: E7 B0 V' ~6 `                .default_trigger = "default-on",
% f$ N" L7 D2 s8 G  K$ ?        },
( k* b% K, h6 c- d% z! y& @        {
0 r/ ~5 H5 ?  i: l* Z! F                .active_low = 0,
. P3 R7 J" r. q* s% |3 s) y                .gpio = DA850_USER_LED2,+ s8 o$ d' k; _+ n; P" r
                .name = "user_led2",! V8 F6 ~% g5 S  A
                .default_trigger = "default-on",5 F+ k& s9 x0 Z' P8 w% {6 k
        },
" K5 x" B8 W: }& P        {
# C4 ^( v; z+ W2 W- e8 v                .active_low = 0,
- c  c2 }" ~+ C! k9 L+ P  J% o                .gpio = DA850_USER_LED3,
3 q3 S6 y( V# @7 ~9 K; L, V                .name = "user_led3",
3 t% f# F& W8 p; a* C$ O                .default_trigger = "default-on",
8 e: T, O! h; j' \6 ?        },
) `4 t9 c+ F% j2 |" f: W};
9 n: T1 m$ {4 t2 O* v- D- s  X$ s6 }# R2 R1 C* H  H
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
+ c/ V# ^9 h/ c+ w0 @        .leds = da850_evm_tl_leds,$ t; M# s& ~1 Y- X- L& B
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),; L% x! h: t% X1 ^: p7 e* @7 j
};) k0 J: [3 Y4 F( V$ x/ b
; W( O- E- @. v7 B9 L0 B. v: d
static void led_dev_release(struct device *dev)
7 V* V0 W% N9 k{5 E: k/ x3 R  b. `
};$ w3 `6 _" K/ ^- C* z; Q
) k9 o$ r  ?, E
static struct platform_device da850_evm_tl_leds_device = {
+ `7 V% M3 U. L6 W) g6 n4 v        .name                = "leds-gpio",
6 K0 Z5 [* ^. h. ?, y        .id                = 1,
* ^' G8 S. ~; v$ K; A* G        .dev = {
* N! o/ p9 l" W9 c, `9 G                .platform_data = &da850_evm_tl_leds_pdata,
& C2 v( `+ v7 l% {7 H  i                .release = led_dev_release,2 n6 i  p3 A, R6 N* w7 h
        }4 C) W# f# h" C3 W
};
/ Y% t- V3 [  b5 v
8 ?& a3 i% T' ?  \7 i7 ?  Y- sstatic int __init led_platform_init(void)4 `8 s7 Q5 r" ^- K: U
{; s5 W4 F- H5 t' R" x- B+ u" X$ c
        int ret;
2 i( q5 J1 L) f" y2 U- D6 z; X& f#if 03 G2 H# \# g# G- ^; a  l% L) l6 d4 H
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
+ U2 W6 a9 P2 y2 ]( @5 S        if (ret)& |$ M8 U! H2 G8 ?3 p+ J- p
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"- n2 S$ |" j9 m  y
                                "%d\n", ret);8 X0 J! q) C/ b: [
#endif* L9 x) u, A) p0 q0 e* b
        ret = platform_device_register(&da850_evm_tl_leds_device);
, T# o" y$ ?% y! l8 n5 T) B        if (ret); ^' o3 Z* ]3 e  w" X) R2 C, T6 l
                pr_warning("Could not register som GPIO expander LEDS");4 q4 f' G; x) l) l9 p# O! m4 X
        else
! G3 S) l; j2 n' o8 W- P                printk(KERN_INFO "LED register sucessful!\n");
. }2 a$ f) b& W* ]
& t8 I5 w. j- R& O- @        return ret;
9 w0 I3 z) R2 Q' n# s, t5 |6 n}
0 r, W" g% T7 t
( M7 e* d7 d7 s& H1 ~" q* Ostatic void __exit led_platform_exit(void)
' f" b* W7 b& R1 L4 l7 {1 Z{
( k% O7 T# f, f! B3 N1 U) O        platform_device_unregister(&da850_evm_tl_leds_device);
) K3 r5 ~8 A* i" e1 N8 X* D9 z4 ~+ j! [  q: z& A, ~) B' i; V# J$ V6 m
        printk(KERN_INFO "LED unregister!\n");6 v/ T' Z7 q* l8 P1 i' L
}+ Q, b7 |4 v! F0 s2 y* w/ a* w$ K

+ ^* y/ w/ Q4 D( V+ Rmodule_init(led_platform_init);3 p. T; g1 Q6 H: w- E
module_exit(led_platform_exit);; W8 `& j3 S$ }

4 ]5 Q' ^+ p4 FMODULE_DESCRIPTION("Led platform driver");
& x: {( e, X& w& U) T+ L7 YMODULE_AUTHOR("Tronlong");: @9 S' u+ m' H0 y' {
MODULE_LICENSE("GPL");
8 t+ N* c6 E: \
7 Q+ w, S8 Y! n/ h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 20:24 , Processed in 0.038139 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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