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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
) |; G$ M2 d6 F#include <linux/init.h>
9 E2 G0 k. j0 s6 w9 |" J#include <linux/module.h>: F, h: g4 X6 q: |" S7 J0 e
#include <linux/kernel.h>
! ?% G# N; C7 B$ R# ^#include <linux/types.h>
( `. ~) M( {! k3 b8 [" A+ |#include <linux/gpio.h>
9 K8 T  S! m* ^#include <linux/leds.h>* m5 e( }$ f9 r
#include <linux/platform_device.h>0 i/ M1 P) c! J: W

( q9 W" s0 j4 [9 H#include <asm/mach-types.h>
9 G4 t& @5 o0 a* A  N5 V#include <asm/mach/arch.h>2 B$ g2 v0 @% z
#include <mach/da8xx.h>
. T/ i" g  v) J$ a3 B#include <mach/mux.h>- \! E; j' i- l
4 d3 m$ z6 [0 h/ C2 B% J# @
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
3 D' @" I3 B  |0 E#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
' p0 J2 ^8 @8 o) c#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
7 Q) p' _- H  S1 x5 t3 s* O' ?, C1 q#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)& ~2 ]% M6 _7 r' v0 R/ l
8 ^. a6 J  k4 G5 E, C9 L1 J
/* assign the tl som board LED-GPIOs*/) |5 e) k( T0 J; K6 W8 `9 m& S
static const short da850_evm_tl_user_led_pins[] = {2 R3 ]8 R, i4 t3 t3 I* O$ h9 |2 `
        /* These pins are definition at <mach/mux.h> file */
$ m  G: l( W( e4 o' [        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,2 C( i$ A0 X4 l% q+ e
        -1
0 c3 [8 i6 n  P# F5 _4 m# U};
+ I3 c- \9 j5 N4 c4 X
* n* `7 F1 c/ S' F5 tstatic struct gpio_led da850_evm_tl_leds[] = {
3 I: [5 {! b' Q8 P- j. \8 `        {
: r+ I/ |2 K& d4 G# R5 m                .active_low = 0,
& d8 C* x7 ?" g5 F. `! y                .gpio = DA850_USER_LED0,
' _( s! W: [" a5 w% H) p+ ?" Q                .name = "user_led0",
4 v+ Q0 q  t' d% [% @! \5 M                .default_trigger = "default-on",! ~. Y+ B5 M: }- k4 s" Q
        },
; |# g! \$ Q. Q; d7 s) E        {
6 o2 |  o5 l* g2 g! g$ q. }+ I                .active_low = 0,3 Y' r7 {/ P/ {. E4 \3 z
                .gpio = DA850_USER_LED1,
$ H2 T) B. ]4 P. C, E5 A                .name = "user_led1",
% q* n* M' L8 z: f) y3 b% u                .default_trigger = "default-on",
# Y0 t- N' N* P0 ^+ }0 {6 Z, S        },
5 t8 X  {; p' [        {
2 D6 `; U0 c4 K2 I                .active_low = 0,
; X% t# R" ]0 v' `; s2 ^( j( W$ v                .gpio = DA850_USER_LED2,! H5 P0 r1 {+ B- I( `2 D1 d
                .name = "user_led2",7 ?5 K$ j) E7 g$ L( q2 \! U: @4 Y- X
                .default_trigger = "default-on",
  s2 |: k/ d) a4 O2 K' n' f) s        },
# G7 R# I2 K2 n4 l3 ?  Z4 j/ v        {; Q7 h+ u1 w# a( K! Q7 c3 l4 {
                .active_low = 0,/ P; I/ |' p4 z* V1 o0 {
                .gpio = DA850_USER_LED3,
/ ~4 p* n. }; D5 S  ?- g& b                .name = "user_led3",
9 A$ y) G+ n. C% M3 Q" x: x                .default_trigger = "default-on",; F) B: p8 G: t3 B% w3 N! ?6 z" e' H5 N
        },
. r: X5 v: x3 L};
- d" h. n  b: A- D: j  w" y! `! s. B% b$ C6 t8 s3 u7 t2 f
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
9 m6 c% V- p3 @: H- h4 O- J        .leds = da850_evm_tl_leds,; I* `, R3 @! o8 E! [2 E
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),2 m6 ~( V$ ?; j, j9 @
};
3 l( \! I/ c0 I/ S* N) I* o; w: E9 J6 H! F* s- A' k: z3 X
static void led_dev_release(struct device *dev)" Q: U5 `6 ~) J. ?; F; Y
{9 H$ F: _8 }: o/ b
};- X# P* E) _# K" R- `' g9 u# `

+ g6 y5 P) n# o# W: v. hstatic struct platform_device da850_evm_tl_leds_device = {, e% i4 @, w/ |4 F3 I
        .name                = "leds-gpio",, X) {& c+ E: K; f9 Z! L3 Y
        .id                = 1,
( m" w: Q: a, H        .dev = {
. M' {) \! {; R3 ?9 R                .platform_data = &da850_evm_tl_leds_pdata,
9 s9 {' O3 l* T/ Z                .release = led_dev_release,
; {! z% F! \1 }  F1 L( b1 A) G3 y        }
, G: w/ w+ C: C  Q4 b1 x1 |% u};9 s( O& H( L% R1 h- R# o

2 c' v% O9 l1 x4 l+ n4 u+ ostatic int __init led_platform_init(void)4 |$ f3 s1 R! |# B3 s7 _6 y/ d: G- p
{& t5 r0 W3 g% S' Z! Y) ^
        int ret;
- f0 N! ]0 \' P! A  @1 X' I5 u#if 0
* I1 I8 H7 s- W, h, O3 E        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
- O: d8 [; i6 D: a; _1 L- \  N        if (ret)
+ O- L& @1 w+ r: ?& E5 W3 C' z                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"; N: \, G' ~0 J! A* c! u
                                "%d\n", ret);, `* `" G( d' a( k& r% F
#endif4 s  h/ x4 n# U8 o! f" A
        ret = platform_device_register(&da850_evm_tl_leds_device);
* n6 b4 t0 c& C4 ?/ }4 ?& j5 K7 x        if (ret)+ J8 a. ]8 m2 F- K3 G- R5 W
                pr_warning("Could not register som GPIO expander LEDS");
' d9 l8 D) r8 c% b        else
" F& \: K: d) B* g& }                printk(KERN_INFO "LED register sucessful!\n");
& Q' V( j% L4 B  W; {+ T) m( G; T6 D# a( J% |" {3 r% C8 m/ w5 w
        return ret;: _! R, \& Y" Q4 i2 \, U; Y" v
}
& q6 j: Q$ ~' x! n: ~" T- b$ t" S! H* A* ~
static void __exit led_platform_exit(void)" p" n/ t: w2 T5 v
{" v5 z6 {! k, B6 U1 l5 h6 K- I
        platform_device_unregister(&da850_evm_tl_leds_device);4 D! G4 J& Y; G. b8 g
. }# ^  ]/ @" ~) j% i
        printk(KERN_INFO "LED unregister!\n");, z  N! q4 l% ]* M. W0 X
}5 ?6 m) P$ i0 T- m$ \0 I- _1 U" L( j
5 C8 `9 h3 c* N
module_init(led_platform_init);
; {9 e- c5 k0 \7 N: h5 }module_exit(led_platform_exit);
$ w& _" j/ H, p# M6 q8 k# j( w4 @- Y5 l
MODULE_DESCRIPTION("Led platform driver");
* m8 G7 z( F/ C+ M+ D1 YMODULE_AUTHOR("Tronlong");
' `% c  I8 v& N; h4 {1 B8 \MODULE_LICENSE("GPL");* e* Y; X% o0 z; o' L7 b% S, o3 m% z

3 w$ M- a, K! M1 L/ T& w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 09:18 , Processed in 0.041798 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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