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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
+ V: w8 m. N5 ^7 x" A1 `#include <linux/init.h>
2 i% q- @7 M* V  u# H) s+ u: K#include <linux/module.h>
  K; m* }5 G' _: g! ]6 r* f#include <linux/kernel.h>
" P3 O1 O# e2 I6 F1 j#include <linux/types.h>
4 Q5 s. n) W0 \' S! o) z: |#include <linux/gpio.h>
4 x0 u; I: J2 T# L% j1 x( s% P#include <linux/leds.h>
2 f  j3 d: ~! d& \) q% F#include <linux/platform_device.h>
/ S% M- }. J& @$ P  [- G1 ?
+ O" _1 V+ W. Y& l#include <asm/mach-types.h>0 W7 r$ T5 u# t2 R7 ]# c6 [
#include <asm/mach/arch.h>0 m0 T$ V$ R) B4 d. g3 h
#include <mach/da8xx.h>6 g, G; A$ @& g4 I$ v4 ^8 C
#include <mach/mux.h>, z: ?" v- ]( C# {; E1 h7 f
" M# k. s  b# J+ r
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
$ [$ J$ B) p9 b#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% [( K) z% t8 I" D  k2 L6 U: j
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
+ C' ]0 A! E1 b#define DA850_USER_LED3        GPIO_TO_PIN(0, 2); f- m/ E; T+ p8 i5 w, i

+ U' j- [+ V1 V* ]/* assign the tl som board LED-GPIOs*/) a; w! i5 P9 ~3 \0 `4 ^
static const short da850_evm_tl_user_led_pins[] = {) X  g: k" i5 j' d5 H
        /* These pins are definition at <mach/mux.h> file */
0 m  A+ n. m* f2 a& ]  \& C: b% @3 F, N$ |        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,8 d, Y  H# J* d
        -16 b* l0 p4 U+ O% F
};4 V) O- X+ S6 W4 j' G# {7 s
: a9 r; s. r: A
static struct gpio_led da850_evm_tl_leds[] = {6 ?  f: Z6 U4 L
        {0 s- l- q$ F& E1 c
                .active_low = 0,& {" [9 W  f# c( X4 `# A2 T0 T
                .gpio = DA850_USER_LED0,% D$ `/ X, _; ]6 p! F
                .name = "user_led0",' q( A; h- T! J1 U+ U  P
                .default_trigger = "default-on",
8 b% n. O. o: {  e' u$ I        },2 s' w1 v8 f. o  F
        {
" f/ Z  K+ v5 J7 p% N+ R% `1 Y) w                .active_low = 0,0 S& L( U9 U- |. E$ E+ p
                .gpio = DA850_USER_LED1,+ j4 |$ O% c8 |3 X" W
                .name = "user_led1",
5 B5 U5 M$ @1 s8 f0 |                .default_trigger = "default-on"," b. G% u6 v7 |
        },3 M3 A2 V: B! O8 Y, y
        {
! H4 N0 t4 s  ?1 L$ v0 _                .active_low = 0,+ A& i# ?! p; o$ H
                .gpio = DA850_USER_LED2,
+ L& |6 z# ^; R; L' ~% s                .name = "user_led2",
/ U! W% w9 c9 E! }0 @( p                .default_trigger = "default-on",
& s( I% F9 W( G. m        },
2 ]9 ^, {1 g& w( v3 A& P) k0 y0 f+ T        {& f( v' F# Y# f9 P* R
                .active_low = 0,# C; f9 r0 W; X% r/ l6 @$ }
                .gpio = DA850_USER_LED3,
8 {$ [! {# O- f# T2 L' H4 k/ E+ [  I                .name = "user_led3",
1 s$ C, n3 w; }  v' W                .default_trigger = "default-on",: t( u$ \5 [$ t1 ]
        },6 L9 ^6 y. ~& b6 Z% v, W1 T5 X
};
1 ?! e" r' C8 k$ ^. t6 D! |  f. A' l& a# u7 [
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
, v8 w% Y; h* |( T+ i3 a        .leds = da850_evm_tl_leds,/ K; B2 e. n# m) ?1 K; P4 C# f
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# B  Q+ Q( L; z0 T! N
};
! o+ ~4 v9 p" U. p  y/ B& _: [/ \
6 S7 ?( J  O& [" E7 f& Wstatic void led_dev_release(struct device *dev)% b, t0 V; P# o9 ^2 F. V" Q
{  T* p, k4 ]# ~: J
};% X  S+ G7 X: {* T- ~

2 K; S2 P: z5 a" ^( Y5 D7 Sstatic struct platform_device da850_evm_tl_leds_device = {; \4 x' v6 N4 |3 o4 G
        .name                = "leds-gpio",. B- c) y5 L# m1 j& s! ^
        .id                = 1,$ H0 M3 F- I5 B8 E
        .dev = {; L9 b, n7 `6 h# C6 G( V' j7 e7 [
                .platform_data = &da850_evm_tl_leds_pdata,
- b5 [/ R" C; J5 W/ U! l                .release = led_dev_release,5 j# h1 P8 Z- L! M" {& g" ?
        }
1 p1 f: a# [1 O' C; O5 {# y3 Q};
) o% X: J; w/ r8 L8 D4 S
" g* M' Q) V( G$ u' Mstatic int __init led_platform_init(void)
, a9 x; ?( G$ S+ i! N. D. `/ Q# O{% g: t5 o4 h( P& b, I* ?
        int ret;1 \" O" ]1 d, m( h* q. y) e$ |
#if 0
) F$ o, q) ^6 P  v& [  V        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);8 L9 ^7 @+ R8 q2 n2 c, g1 |
        if (ret)3 }* D* a- U+ C) _: Z* v, R
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
% s  R+ Z' \" n                                "%d\n", ret);3 A+ X1 u  ?3 B& m
#endif* c, K: T" t: D& y& [* w5 F/ Z
        ret = platform_device_register(&da850_evm_tl_leds_device);! u) y/ w* r: A% Y. p
        if (ret): @. K  {; I$ O/ M, p& n- M
                pr_warning("Could not register som GPIO expander LEDS");$ o4 ~2 O# Y, i/ H. i) G- Q
        else/ h1 u7 |3 O( ]7 x# r; z1 B3 o+ s
                printk(KERN_INFO "LED register sucessful!\n");
: O/ K' G& O+ I* f$ S7 X  N$ {* D7 D
        return ret;9 e  ?+ ~! v. M1 A
}, c$ r( G' T: J+ [, G1 f. l" X! F1 i. `
% U, q% I5 M* V+ r# r$ Z9 n1 x0 a
static void __exit led_platform_exit(void)
( p" P- V# e6 x# B, V$ D& V{
% ~8 i; `  ?" W/ ^& a        platform_device_unregister(&da850_evm_tl_leds_device);
$ a5 N: d2 e: K* f' |% s- S2 g5 Z! O: x( V/ F5 R6 y
        printk(KERN_INFO "LED unregister!\n");! @' x* }) f' S. }" I! T6 x" E
}
. R8 J) W: @: z0 C) d5 H9 e; Z8 R: p) Z% s3 {3 m) ~
module_init(led_platform_init);
: ^# l1 n: g/ ~module_exit(led_platform_exit);
' Z/ `8 {7 I7 t' G9 g
# R0 L- J4 k, T& q. ^+ q9 C* Y  jMODULE_DESCRIPTION("Led platform driver");
9 U+ E  q* n  B: [% B" i8 i2 AMODULE_AUTHOR("Tronlong");
( Y) b$ J. `. v1 ^, WMODULE_LICENSE("GPL");2 N5 j' G- l# A* F# m& _+ `
7 ?! F/ z5 m. J  w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-15 19:57 , Processed in 0.047480 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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