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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
: M) f$ x; s: o) m# k# D6 Y! f( t) x#include <linux/init.h>
  w9 G7 G  c* u8 w/ _* ~) \#include <linux/module.h>
% t% R' o9 ?) x, A( C#include <linux/kernel.h>- w& c, a* v( r2 b3 Q1 c
#include <linux/types.h>
6 J% ^, ~& e3 Y& j9 j! W# Q& N#include <linux/gpio.h># J6 B1 e( S% Y% D
#include <linux/leds.h>" i# J9 l! v( T. u$ z. w
#include <linux/platform_device.h>( z/ ^5 V/ L, h" l0 c2 p& X4 J9 q

" n1 s( a8 [+ @( c+ \#include <asm/mach-types.h>
2 {5 r& N, y- N; x# u9 E* y! p' C+ p#include <asm/mach/arch.h>
# H5 n; ]; `% ~! L. a#include <mach/da8xx.h>
" r( R4 m3 n4 g4 L; g1 j( F#include <mach/mux.h># o9 h3 e1 I5 C# @
8 U- V+ u9 N% x. h
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
6 d" B* Z4 z' p: M#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% H8 x6 Q2 D% p1 A
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
* t6 e% `  T# x#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)/ |4 Y/ q: d# r& Y. o2 J

* G: ~0 c% }5 h/* assign the tl som board LED-GPIOs*/
; E) Y: a3 G' Nstatic const short da850_evm_tl_user_led_pins[] = {
+ K  {; ~5 a- ~% g! |        /* These pins are definition at <mach/mux.h> file */
4 s* z' t& u" z( I6 w        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,: J3 Q& ]! _8 A6 U' n. ~/ R- c6 G
        -1
/ F6 G1 f) G. L4 K( u1 z& X};
4 [, B/ p1 u" W; w
; @0 q9 {' \* F, F' O$ D5 Wstatic struct gpio_led da850_evm_tl_leds[] = {# z; x# k! u0 q6 I( \
        {
' a$ U) ^7 S! ?0 h                .active_low = 0,
5 W: C' b  j: C& f, S                .gpio = DA850_USER_LED0,
+ n" |$ H3 P# z, s. r  R" ?: |                .name = "user_led0",: k" A; d$ F, P  |% b
                .default_trigger = "default-on",# f: V2 d/ j% R3 [9 l
        },
$ P1 v: E& l$ d2 j) j' T6 p# `        {3 C# u, u7 k+ `' X0 G; `; F
                .active_low = 0,* a: V: q* [  B7 J/ i0 V- v
                .gpio = DA850_USER_LED1,
- `  u" r) T' `" t8 L% H                .name = "user_led1",
/ f9 D) B- u& C2 ]0 d( s                .default_trigger = "default-on",
2 p8 P& p$ Z6 A/ H0 x        },2 b- r. d& ~  x7 ]9 z" m
        {
' I8 }! |: _9 J& i- X                .active_low = 0,7 ^! ~, n4 T1 T7 A( e3 G* a
                .gpio = DA850_USER_LED2,$ K4 [# N3 q8 H! Q1 e; |
                .name = "user_led2",
, U( [  W! I1 ^9 ]) V                .default_trigger = "default-on",0 D  i; @$ C+ ^) ]  ~- [
        },8 f9 I. Z; D! K9 u& t# O7 Y
        {
7 V! h+ D7 Q% w$ K* F! j" e8 [                .active_low = 0,( y2 V+ N! N- \5 I8 X5 s
                .gpio = DA850_USER_LED3,
0 q" ~, s" T) Q& q& ]- N                .name = "user_led3",
* X, R/ P' a! {8 W( Q. f# h$ @                .default_trigger = "default-on",
+ _! S7 Y' H3 z" r        },  r6 R9 m2 Z' q; @3 F$ Q7 ^
};- B& n: }; o8 S
6 k: o/ b: m: J
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {" r0 Y, f9 Y+ h; D9 ?8 n* r
        .leds = da850_evm_tl_leds,
. i* P  {0 Y7 b' s/ N# R# u2 r  S        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
# \% l" H, ?, a; E/ I};/ w( @) H, Y" {0 H
* X3 n' G, j0 ^# f( Q" ]+ M$ G
static void led_dev_release(struct device *dev): v# I9 C$ t3 u+ {, `7 Y0 [* B
{
" p: S$ e( E9 s6 g3 M: _};. g. p* j1 e8 ?1 e  @+ F
$ [2 p3 H3 Y  G% Q% u
static struct platform_device da850_evm_tl_leds_device = {" X6 O# x/ t9 j( U( B) f
        .name                = "leds-gpio",
+ A3 j9 P! S+ d        .id                = 1," y) o* L! z8 ^1 P) M8 t
        .dev = {5 `8 B! `, D1 _6 N9 l9 V& Y& i
                .platform_data = &da850_evm_tl_leds_pdata,4 W; p, }8 T1 j# a; T, ?
                .release = led_dev_release,3 v" M5 G7 C1 v/ _* Y, O( k3 U8 K
        }
2 A- W0 l& R: b7 ?6 d0 a};; t6 j7 N( \$ P& J' @* q
( F6 \' Y4 z9 m# v1 H
static int __init led_platform_init(void)
. i+ N# r6 f  A+ T2 @7 J' y: g7 Y. Q{, z2 j6 a. E2 M( ?7 t- n5 `. o, Q# j! E
        int ret;
6 L6 a7 J4 k1 v. p#if 08 I/ J# a" ~4 B- j( K% t( u
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);, W, p  p- o5 o7 T4 G( D
        if (ret)
/ ~) G5 ~. q5 I, y; ^5 v# P- P                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"2 o/ [0 K6 n5 Z, v
                                "%d\n", ret);
4 c+ f$ `% w' \( w#endif0 z. X7 w1 l0 L3 I
        ret = platform_device_register(&da850_evm_tl_leds_device);
2 T% `) }: R& c8 W, X1 d/ c( z' z! B0 |        if (ret)
5 F8 o2 Z; c2 Z1 e: q9 l5 V8 p                pr_warning("Could not register som GPIO expander LEDS");
* M4 w3 r& ]- K6 l" e7 y( h        else
5 T0 V8 s* L. |" i  v: `3 @                printk(KERN_INFO "LED register sucessful!\n");; f" E- {# S" N) s2 r: M* h

& J* ?5 I2 {7 O        return ret;: a( W! v+ ?0 x: S
}- ^3 `4 H5 Z' O( k; w9 W4 f3 N4 N
7 f3 c8 X6 R* V6 ~
static void __exit led_platform_exit(void)" v& F+ E% a- Y0 e/ z1 B% i
{
0 r: K! {7 `, c" |        platform_device_unregister(&da850_evm_tl_leds_device);
" h9 Y/ |. O! u2 C
* [# V- F9 k; W% Z: k2 b! a        printk(KERN_INFO "LED unregister!\n");
1 q, z0 @: t" j5 ]0 D}
# x* ?: \6 [9 e3 L" k/ ~% m. q* I3 s4 m6 y( [
module_init(led_platform_init);
5 l# ^; u) o; E! o$ mmodule_exit(led_platform_exit);2 T& L8 T& M: F* ~0 z' S6 d$ P

8 i* A; q4 v; k5 p* KMODULE_DESCRIPTION("Led platform driver");
$ k* @# b8 b$ w5 h5 pMODULE_AUTHOR("Tronlong");
1 X+ q' s# s% V. B# p) V' ]0 w0 wMODULE_LICENSE("GPL");
" \, T8 r1 W2 b6 y0 n9 w! T( o6 |  z2 V6 Y; X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-24 10:23 , Processed in 0.039395 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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