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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
( @& {; m! z7 c0 o, j* U# \' d#include <linux/init.h>
( S. A0 a% S4 Q2 U. @#include <linux/module.h>
; m, J) O) E" m$ j#include <linux/kernel.h>
7 C( U, }# z6 L$ W( P: c* i. r% `#include <linux/types.h>
. y, z# S  o8 {" W) T* I#include <linux/gpio.h>4 b. S/ r8 ?& W5 B; @! P- k/ Z6 }
#include <linux/leds.h>* s, {" D6 A7 N/ p0 r9 o
#include <linux/platform_device.h>
4 ^8 g0 O% P- m& q- d! G0 a
" j2 ~- ~' A' l& _4 o5 k" `#include <asm/mach-types.h>
$ |7 B  Z! J. Y3 ]! r3 P#include <asm/mach/arch.h>
8 m6 q8 x% Y: Z6 F, v; \#include <mach/da8xx.h># {4 `, h  ^: O" [  W2 r6 A# V% p
#include <mach/mux.h>
) q' B( l2 T+ x& W( h' f1 X  I5 A3 ?& ~4 H; l3 v
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
5 m" N, w6 ~' ^  ?#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
. z! g/ }" d2 D; l2 e9 Q# f1 d#define DA850_USER_LED2        GPIO_TO_PIN(0, 1); P1 L% B" o, [( E4 g" [
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2); |2 g2 F- W2 \1 ]8 U# l4 e) L" j
' e- d: O% I) Y
/* assign the tl som board LED-GPIOs*/
: `& \! F" t3 wstatic const short da850_evm_tl_user_led_pins[] = {
, E4 ~% ^0 ^3 _' v4 @* ^        /* These pins are definition at <mach/mux.h> file */! p$ g  f% x( ?8 l+ j% x
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,* Q- h/ A3 W+ _4 ]% `' n
        -1
9 U7 ]+ M* g  `' l9 R# z};
5 H9 H% s7 u$ ?/ A" N. U" }
9 k, l& M1 W. Fstatic struct gpio_led da850_evm_tl_leds[] = {" W3 M% `4 h; z& |) S
        {
5 z1 u6 g# A, l                .active_low = 0,+ v! N3 w' z& I3 Y1 k. ]
                .gpio = DA850_USER_LED0,
/ h& k5 M3 A  i; Z0 k3 t  O                .name = "user_led0",
; N3 |+ L5 ~2 \5 N0 i' y                .default_trigger = "default-on",
# z" t& I. K' t' ?- j" Y        },
* t7 I; g5 P( e1 q        {/ n" h" h, r. w7 ]( E) y
                .active_low = 0,6 x* f8 B1 I1 f1 }+ }4 I+ m
                .gpio = DA850_USER_LED1,, b& N8 j3 c  o! x; @1 Q- ?
                .name = "user_led1",
! [  I2 \9 z+ @2 C7 P( `- A$ k1 x2 x                .default_trigger = "default-on",
0 W: z& n1 y7 ^1 J2 _3 z. G        },% J/ P* V1 W, k; ?2 M' k
        {( ~" w2 t- \" h  |8 d8 ?: q
                .active_low = 0,2 [3 `( V. t) A3 s* [
                .gpio = DA850_USER_LED2,
0 |: ]( _- V4 e: A7 b( z                .name = "user_led2",$ G+ b+ i3 ]" ~; G- ]+ n
                .default_trigger = "default-on",7 Y- a  H) n# O2 E4 P& y' ]* c% v
        },, a$ @* I1 Y. G/ t+ h; S  h
        {/ P) R% v) ?/ I2 b% y
                .active_low = 0,
, f: Y! Q7 ^. o- B" U, p+ @6 B                .gpio = DA850_USER_LED3,
( i+ `7 D3 a3 h: i7 v8 Q                .name = "user_led3",7 b7 t" ?) C( N  w2 b  f; B
                .default_trigger = "default-on",
2 n3 Z* ?2 q* e. B  C        },
9 @) `. p/ y" e  H, m3 ]3 p};+ h) N' i  u! {* ]" C

/ }: n4 j1 j+ I$ i" ~+ [static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
. ~0 \/ U4 A) U( ^7 N& }1 o        .leds = da850_evm_tl_leds,  Z& x; }( F% u; ~8 }  A) ~
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),/ L. j) G5 v" {& {# A
};
) s6 u/ ?0 {9 x: B$ ?- X- s% v% R% d
+ J7 B2 v& _  W9 ^! tstatic void led_dev_release(struct device *dev), h6 q, z- i% n$ m
{4 K+ J* i# E, Q* }! ~/ r
};
. K/ s* B- j9 U& p6 c5 L6 w! I( i. G4 Y2 g6 J; V8 N: p
static struct platform_device da850_evm_tl_leds_device = {
" w$ c6 P3 o. O" G6 ]        .name                = "leds-gpio",
, t( }8 M; e9 c3 x3 n9 ^8 O        .id                = 1,
0 i" m9 a5 S2 s2 o        .dev = {! q  j5 }" w: F: z7 n
                .platform_data = &da850_evm_tl_leds_pdata,; S" w7 D. B6 m2 z9 [
                .release = led_dev_release,
3 e" l- `2 }8 D' L; T; V: p3 k" Q        }+ [0 j0 m% m' f+ R% Z' f* Y0 R
};
& ?  X9 C' u& x. F+ B. m! ^
0 ]0 }9 z! K& pstatic int __init led_platform_init(void)! h* J1 ~3 m: M) P& E
{0 \: s% p$ V  V
        int ret;
. l2 E! h0 h% A) T#if 0
5 D5 T. u: V1 D: a        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);, H$ R: ]) Y2 `: X7 Y
        if (ret)
' O+ y7 ]; I+ z, |8 n+ ^                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
# {# d/ @* J( m8 \                                "%d\n", ret);
. H& \4 c* `+ i#endif. t3 m8 ~+ V! F) Q
        ret = platform_device_register(&da850_evm_tl_leds_device);
# [' A: v( s( _: E        if (ret)
  A4 A& P; O1 e                pr_warning("Could not register som GPIO expander LEDS");
$ W5 U2 s+ g( a        else
/ K( V* W4 y3 P" D' {+ D% u+ L                printk(KERN_INFO "LED register sucessful!\n");
/ Z; E. h0 j1 h8 ]7 {
; R$ f. b. v) g4 i' K: r4 U        return ret;
- n0 s& L5 F  q' v}
9 v" U9 \4 u- H2 L/ p6 w" ^8 N' l' V' l0 E
static void __exit led_platform_exit(void)
* X! }/ P  E- O' ^, n{
! T7 t# J. _$ y8 u) a+ A% F7 k        platform_device_unregister(&da850_evm_tl_leds_device);
0 W' n" b" }( K% _6 F9 R  U+ M
1 _& Z) r! z9 E) @5 p% |        printk(KERN_INFO "LED unregister!\n");, J- U3 t0 _7 Z: v; w
}* h) F7 L) n0 f3 c/ c5 g$ c

+ h$ p- \! N9 P% U0 b- Wmodule_init(led_platform_init);5 @( Q8 o) h0 {: u* j$ Y8 s3 r2 \
module_exit(led_platform_exit);
7 L0 M$ p* Z- l# E+ w2 |# F9 P8 S) K7 u
MODULE_DESCRIPTION("Led platform driver");0 N  l: a( c' ]' j! }4 j
MODULE_AUTHOR("Tronlong");
* c: B1 m$ T/ @" iMODULE_LICENSE("GPL");
4 i/ k* e( G5 A! a* I  Y) Q1 Y
+ K) a; u* J: `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 22:57 , Processed in 0.048755 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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