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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
2 R2 {. Y+ g- w8 z- B6 j$ o#include <linux/init.h>
! J4 I! O# B& S, w& P& g#include <linux/module.h>
' [6 g3 @) ~  G* \; o. G' Q#include <linux/kernel.h>( p' @0 E7 [/ W- s
#include <linux/types.h>! Y- Q5 H7 w+ t
#include <linux/gpio.h>. ^. h# T! ?0 R$ t4 \  ^
#include <linux/leds.h>
; {$ c) y6 H: z4 A' o6 m. \0 P#include <linux/platform_device.h>
5 S: w5 z/ y% G/ E% B/ {
) t$ _7 T' {+ E9 g! G, c#include <asm/mach-types.h>
# @# y4 i8 `1 W" r$ D7 N5 x#include <asm/mach/arch.h>$ A% p0 k3 v9 Y9 E* N; |
#include <mach/da8xx.h>' L" b5 w% ^, q9 ?# W& B. ?
#include <mach/mux.h>- U! A. ]! f5 U: i

" L* c! z: h( b; @#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)5 m6 p+ y* A) g! R
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
7 W2 `4 Q* h' \- ~) R#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
& P4 ?, K# d, R8 W2 v2 ]9 P. y& [#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
! z& b7 F& m7 h
2 Q! X# |) f: ?/* assign the tl som board LED-GPIOs*/$ j+ {& W. ?6 H6 K0 Y5 h" k
static const short da850_evm_tl_user_led_pins[] = {% U$ s& l  T; F( |
        /* These pins are definition at <mach/mux.h> file */
4 c  L! s% D; q  x: p' ^3 ?# x        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,( F3 ?, T2 P/ c# Z/ j1 K( |4 \
        -1
* y7 L0 J  M  O0 r2 d& `# @2 W% @. L};
% Y7 b$ ~" l9 g- Z2 \
, x1 ^$ E$ Y7 G5 t( n5 sstatic struct gpio_led da850_evm_tl_leds[] = {! D( E& X; p4 X$ l
        {% X1 i8 A  n& C5 y7 B# X- i! ?+ `' B
                .active_low = 0,
) b! D" z: S3 q6 M/ c                .gpio = DA850_USER_LED0,8 u' W% Y: B  J! `7 ]1 d" }. D
                .name = "user_led0",
" l$ b7 L& k4 U5 `                .default_trigger = "default-on",4 U2 L) I6 A  F1 L3 {
        },
9 X' O' K5 \; o$ f6 V$ |+ }# `; h( v0 b        {, t9 W8 G$ E- l, u
                .active_low = 0,
2 J% D1 s0 k" H, x) I% e                .gpio = DA850_USER_LED1,# T# C3 N, ]% K/ @9 Y7 ~
                .name = "user_led1",
1 P6 ?3 {. q* u" q) A$ n. e                .default_trigger = "default-on",
! m2 A. P& I' x, q; s1 F- e4 L        },
* v. z; h# N% u8 w        {
0 B9 _: B/ R# v; U4 E% }                .active_low = 0,
* q' j- g& _1 _' ~" i% M: j                .gpio = DA850_USER_LED2,
0 e6 F! ^$ U8 z7 K( `& ?% G                .name = "user_led2",9 N9 i8 ~: \/ ~& W
                .default_trigger = "default-on",. E# n8 l- `+ j! D
        },
6 k3 z& b! X0 I, Y        {! I% j- [" q- j! W, g8 }
                .active_low = 0,' b+ M$ [* s. v" j
                .gpio = DA850_USER_LED3,
* z! [# x4 Q; F" i  E                .name = "user_led3",- F( f' P% q3 @
                .default_trigger = "default-on",
, U: s& ]+ y6 N. a' |, I; P        },
! [) d3 R* k7 [4 v/ V5 l};
6 q, [9 e9 W( X3 i2 r1 A+ H: w1 |0 H) G/ g
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {0 m0 [1 v# T9 k/ Y% k
        .leds = da850_evm_tl_leds,6 I+ O1 j) D% T' {" _$ O6 G' g
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),$ B. O  t8 Q: D- s8 a% F$ @
};# U; K9 \3 Z" B5 ]9 {: G! }
1 e  E8 ], h! P1 B5 @& C, i
static void led_dev_release(struct device *dev)
" ]- Y" D. D! K9 D; U6 e" ]{3 h; g4 R8 z+ ?+ D6 Q$ Q% L1 n
};
, d6 n8 H( `9 h6 R, X' R: q. H; I; Y' ~1 \4 C2 F+ ~6 G; S* C- S
static struct platform_device da850_evm_tl_leds_device = {: A* P' ^& I8 t0 L1 D$ s& e' W
        .name                = "leds-gpio",1 E1 Q0 r# Z* }" h, }; F9 c& B
        .id                = 1,9 `0 D. Y7 R6 S- N
        .dev = {
! v9 j8 H7 P: e0 M2 p3 ^                .platform_data = &da850_evm_tl_leds_pdata,. o$ I& f" B9 g$ [7 f+ r
                .release = led_dev_release,
9 V  K) b& U: C# E: r+ T& u        }
' C# g1 `% u' u# M! x};0 @: b; X4 |; |( @# M' q
' t$ t! U) L. ^% w
static int __init led_platform_init(void)8 G6 d/ J" n! I0 B
{
- G* u* o0 L; k6 i8 p        int ret;8 a3 B  W5 W1 g- I9 \/ K9 Z: e
#if 0
# b% {4 O/ L& ^        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
: h( D" Y, B% N7 |( F        if (ret)3 E- W; ]6 ~" A6 G" I# }
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
5 z" D# i3 d6 X: R1 r4 A& Z                                "%d\n", ret);
" h7 l8 ]) x# e. ?: H5 u  b#endif
& {* m* R8 `$ f* V* k3 u; R& {        ret = platform_device_register(&da850_evm_tl_leds_device);9 \' q7 I( C8 X8 v
        if (ret)
* M; p+ v( F; B0 P; A0 n. q                pr_warning("Could not register som GPIO expander LEDS");
% T; K! [! i& c8 [) w0 i        else
5 Q, K6 ]' \  O6 M# m2 Z3 u* a                printk(KERN_INFO "LED register sucessful!\n");
6 U5 J7 s$ q3 `
9 T$ Z3 I+ E( g2 P/ Q        return ret;8 z5 j: u1 D( j9 m  `" ?
}/ G! N' Q4 W% _% p# N1 b( a
5 v1 N3 ~4 c" J+ G* U) Z! T# j
static void __exit led_platform_exit(void)
9 m) B7 K' ]1 f) S  X1 n{
' T: E) P% [/ {        platform_device_unregister(&da850_evm_tl_leds_device);
0 H  n: l& o# {1 |# J/ E* P- F- @) E% \% F& n6 k
        printk(KERN_INFO "LED unregister!\n");
$ h- M, W: X) h4 R2 X( K}6 t) y; Z4 o1 r7 b2 h) d; B+ a
  b5 O5 }# X8 J1 R' h* h* |+ ~6 w7 M
module_init(led_platform_init);" Q7 M' Y# J3 |" s- l- g* _
module_exit(led_platform_exit);% t  y, [+ J$ N& U: }. Z3 W" Z
! G. L# U( X9 I8 x* N7 H0 a* `6 {
MODULE_DESCRIPTION("Led platform driver");6 A" u7 O- X& M
MODULE_AUTHOR("Tronlong");
: {6 F% D6 s7 @# \MODULE_LICENSE("GPL");
4 \$ E$ C- A' I% ^) i% v/ s6 h) S2 R3 H  f7 V% P  R. x3 F) J# \4 n$ o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 01:47 , Processed in 0.038822 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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