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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。# b+ h  _1 r6 C+ C8 \1 ^
#include <linux/init.h>
' q6 a7 }, U" }1 |0 W; y#include <linux/module.h>! ~" y" x* Z% p) D1 O" I$ v, ~
#include <linux/kernel.h>
7 x: X! ^3 Q+ R. Y, T- g" z#include <linux/types.h>
. ?9 d3 o; @! g#include <linux/gpio.h>
# y2 M- s# M! B/ E#include <linux/leds.h>
- p  [8 S. e/ f: f7 m/ K" r#include <linux/platform_device.h>" |2 @6 b( e5 E, L' Z6 i7 N( i1 }
4 H0 j) a2 B" \; T: _& w. T
#include <asm/mach-types.h>
# m( N6 R" l7 Y+ D. X#include <asm/mach/arch.h>7 h; K5 @# [) Z, V
#include <mach/da8xx.h>
1 Q4 h6 v: @- ?: \/ W* R#include <mach/mux.h>1 B( ]  B4 O- X

  {. q) u& y8 Q- @5 E4 ^$ J#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)4 s6 J* U3 r: ^) O7 Q& ?0 k
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)8 i& j, S5 y, D. Y7 l+ V
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1), p8 K/ z6 U! W) ^
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
6 s" G( G+ ~  Z7 K' L
4 w+ S& ~* L9 y2 `/* assign the tl som board LED-GPIOs*/! W' Q4 G" r6 R% b6 _
static const short da850_evm_tl_user_led_pins[] = {/ j& P" {* \" J# k4 i9 ?
        /* These pins are definition at <mach/mux.h> file */, e6 t, u5 U* @1 g+ Y( n0 Q
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
% S9 {' X7 T6 D6 F        -1
9 i( v/ ?! T: \3 R6 \, x4 [2 z' k};: V- _* g$ ^3 I7 |8 Q

1 ?6 W- n: g$ t) @  Q% ?9 V& i  M2 kstatic struct gpio_led da850_evm_tl_leds[] = {1 ]; x; R. V/ v! c9 R& ^
        {4 E* _8 L7 n4 f6 i5 k0 x$ T/ f
                .active_low = 0,/ Y( h1 N% U! D& J* v
                .gpio = DA850_USER_LED0,
  |; H. V$ Q, w: e. r) w                .name = "user_led0",
) @' P/ P4 O- s2 k                .default_trigger = "default-on",
! G& R) P+ z, R2 M4 B; y& Y9 w        },
; T+ ~& w; N% W) Q  _        {
* m/ O3 M5 \4 @/ C                .active_low = 0,/ M6 X( t1 B* G& @) l6 v
                .gpio = DA850_USER_LED1,) S) d8 ~% Q2 B4 p, B, Q
                .name = "user_led1",
$ Y2 ^% Z. F) h+ n$ ~                .default_trigger = "default-on",; n6 h& F* v7 F4 j) l
        },( ~; [- B5 k0 J/ D5 G  D
        {
0 Z5 S5 _; U  [' E8 C  D  M                .active_low = 0,
4 ?5 t0 m& y* L: {* z& l6 I                .gpio = DA850_USER_LED2,
4 @( ?* y9 b, m1 p: m$ R3 f                .name = "user_led2",: I" @6 C$ _8 t! ^# Q" d
                .default_trigger = "default-on",
8 q$ U( b8 q6 T! c- [9 `        },3 @9 L% e  [$ `2 `
        {
4 Q- u1 a) S, \0 D' ]# L5 Y                .active_low = 0,
/ R9 y3 f$ P7 x8 R7 _, A                .gpio = DA850_USER_LED3,
* k% V3 u( Q  x' t. V% [6 S# e. A% z                .name = "user_led3",/ z7 j: r6 E" j) L+ i
                .default_trigger = "default-on",( {$ ]3 ~+ j  C% I$ k& B
        },) {9 t5 Z' j5 j0 Y& @: p: h( |  O
};) S1 J: D( P, w" t
: j( `+ @; A9 G5 f3 N$ f" `7 [' Y
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {% v" Z1 t9 `* N; }# ~6 W) ^
        .leds = da850_evm_tl_leds,, o3 s" j  V- A# Q, c
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
1 w' q7 ~$ N+ i3 u3 X; `, m};
; Y0 U% @' W( Y2 B) `$ @1 b. x; r& X* g; Y" d/ p( o
static void led_dev_release(struct device *dev)! i! h" _5 V  k4 J, q! ~3 F7 K) {
{) s: Y# x0 r" T+ {8 A* I  T
};) \4 a2 W8 h9 @7 |

) X% X, h( Q! l8 I% {static struct platform_device da850_evm_tl_leds_device = {8 N( o0 e- p- L% }) K
        .name                = "leds-gpio",5 u+ Q- W* I/ ^0 Q/ Y# N
        .id                = 1,# n& v, `4 b1 N! X$ k. l* Z0 D
        .dev = {
& [- k6 Y1 t! R/ l- X4 R                .platform_data = &da850_evm_tl_leds_pdata,' ^' \1 H% q8 g
                .release = led_dev_release,/ f  k: A8 s' H. b
        }
0 b& e( O6 m: ]. g8 y# j};
4 E4 ^- m# w. s/ E0 J
$ H# A9 _0 I3 estatic int __init led_platform_init(void)( f4 q/ f+ a' @5 [
{5 C4 a8 J! t* x+ E
        int ret;
9 j$ \/ [, O+ P#if 0, p( S9 R! e: a6 @! u9 P8 h6 r
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);" Y( b+ ~. Q8 @; \, c& G
        if (ret)
4 s+ ?8 b6 A; }% Q0 w  h                pr_warning("da850_evm_tl_leds_init : User LED mux failed :": _: r7 M% i2 O) w- s) T
                                "%d\n", ret);3 B1 v4 Y0 ^4 x" ?7 [0 D$ Y) w: c
#endif
- L. N, L0 U) R$ U! v4 u1 `1 n        ret = platform_device_register(&da850_evm_tl_leds_device);
* \: E+ L; Z* {$ f+ q- r        if (ret)5 A8 k: R% R: n. c) J6 m
                pr_warning("Could not register som GPIO expander LEDS");1 R# z" N, e# \, g2 d4 Z1 |8 |3 q3 f
        else
  g0 D' ~2 M! l/ u- z                printk(KERN_INFO "LED register sucessful!\n");
& L3 M0 i% g+ ^/ W/ p% \; Q( H2 H; T
6 L# h" j$ B  ~# |9 g        return ret;5 t/ x) T/ V- Z( h  Q; `6 z+ A/ f0 `
}5 G/ _( S8 i, {+ i

3 H0 J, {0 w9 \- g( W6 }1 {( T; Jstatic void __exit led_platform_exit(void)
9 \/ P% z9 B, y# \8 ~3 J4 ^{
4 }- u2 t( z- ~% q        platform_device_unregister(&da850_evm_tl_leds_device);: R3 M. M0 h+ }; z# |

1 Y; `; _; ]& \$ J  M        printk(KERN_INFO "LED unregister!\n");- |8 M+ v0 b, g) U: `  g
}
9 t1 G% f: U; F
) R: y7 u/ P# D- Rmodule_init(led_platform_init);! Z9 v# K1 _1 x! F5 g9 q
module_exit(led_platform_exit);: m$ ?% o& `, f
1 h6 s6 M& _# ^( u7 H
MODULE_DESCRIPTION("Led platform driver");
! I* _4 o8 h0 p+ TMODULE_AUTHOR("Tronlong");2 {4 J$ N6 e7 A( R) f0 E
MODULE_LICENSE("GPL");' x. s: J9 r/ {' q& r' Q' b1 S

8 `! ~6 G' ^6 a  p+ j4 W1 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 02:49 , Processed in 0.046900 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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