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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。4 c, \: G7 w( k% ?
#include <linux/init.h>3 i# F1 c0 M1 r. w  M
#include <linux/module.h>
; Q# X; f& A& o- j* s3 j#include <linux/kernel.h>
% ?3 R+ ]2 b+ ]* r3 j" s* }#include <linux/types.h>
* h( v0 _: n7 i6 A  S5 \4 O#include <linux/gpio.h>
% }# O8 `' J7 b& z9 y( ^1 J$ E#include <linux/leds.h>; K+ j& l+ T3 a) [
#include <linux/platform_device.h>. V8 U! n0 G* p+ [6 g
1 U5 }# v+ j+ y/ \) Z
#include <asm/mach-types.h>
% C# p# V/ L) z* Z* D" f# V9 [#include <asm/mach/arch.h>
  l8 ~) e' d- g  L. D" Q& J% q#include <mach/da8xx.h>
; V8 m9 f; M8 e6 z! C#include <mach/mux.h>
! b. M9 X. {- n2 |, J$ V: Q$ q" i
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
6 a: x0 p0 q8 H#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)3 X) \8 A- _- K. E: t' z
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
( F, T5 A: w) l#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
( V" C6 |& C! I1 U0 \
' N1 l' Q* s/ t# k& S/ O9 E/* assign the tl som board LED-GPIOs*/
6 D6 s; B) Y/ n6 B* qstatic const short da850_evm_tl_user_led_pins[] = {+ Q* _2 t, U8 ?% k& q2 z
        /* These pins are definition at <mach/mux.h> file */: W3 q+ G% o; U$ c
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,/ U5 i, v! ~1 |6 N  l
        -1
, _# g1 u4 A+ q};: M, K1 o. t/ E: W; [
  e' x) q/ t3 G2 A
static struct gpio_led da850_evm_tl_leds[] = {
; [% O9 l5 N- o8 P( o( Z6 b$ F        {7 u7 o, c" y1 f3 p+ |
                .active_low = 0,
* |4 T* U$ D9 B: g                .gpio = DA850_USER_LED0,  d: {7 M- @' m  d' _  X
                .name = "user_led0",; l4 {6 _4 l6 V% Z/ S: F! R6 n  V
                .default_trigger = "default-on",4 z% _6 e2 G  K2 g1 T! P5 \, |
        },* F% L" ?- U& Y4 s
        {5 W- n# ]3 V/ u& r1 a3 X  O
                .active_low = 0,6 ]/ O" R* e3 K# d  x
                .gpio = DA850_USER_LED1,
3 z# K; ]1 L7 {$ z5 Y* `                .name = "user_led1",
8 _' E+ X( U$ k) E4 h5 ^! N                .default_trigger = "default-on",
! R% ]# u8 Z0 z! [+ K0 \! x        },- @8 D3 F0 |9 O  w
        {
  U4 i  N, o6 m0 ]                .active_low = 0,
  u; x+ }) b1 H( y                .gpio = DA850_USER_LED2,: I& I) }& H7 ?/ Y' f  e- ?
                .name = "user_led2",% S! R$ `+ {3 w$ M
                .default_trigger = "default-on",8 g  W4 S5 V3 k- u6 ~
        },
7 ]* @8 W6 [  H. u0 g        {# R# v' {0 f- U3 O! C/ |2 i- [% x
                .active_low = 0,
# z4 Y6 n+ Q/ Q+ }9 v4 v                .gpio = DA850_USER_LED3,
4 b' ^( D( u$ x+ B# D" g                .name = "user_led3",
& t" U! s. {( o% n. {9 j3 d                .default_trigger = "default-on",4 |* ?. L9 f+ F
        },: \8 `& m- A, E6 G$ d
};
+ m4 J. G. U7 q( a. M' i& @" `& x
8 l& {' j. Y  u' m' f6 V, ^static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {3 U# g7 O6 N3 n3 E7 ?; c
        .leds = da850_evm_tl_leds,* ~% t3 @( I% a. |$ g8 m
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),1 a( l  E% s3 `( A
};: N- l. \. N% c

( P( w) D; j5 N2 [6 J; d3 x3 vstatic void led_dev_release(struct device *dev)
5 U# Y" Z1 W" B{
% A" j3 b8 W5 P9 W};0 O0 y  H+ y% C  V
3 |0 [, k0 u1 Z, ]# _0 d
static struct platform_device da850_evm_tl_leds_device = {
1 O# h7 S" S& m3 L' A8 @        .name                = "leds-gpio",- \& E- G* X* g- ~, B- z% _" ]
        .id                = 1,7 ?$ U# R4 ^/ K# F  O: }* Q
        .dev = {
4 `# I) [! ]" P                .platform_data = &da850_evm_tl_leds_pdata,
& B! m7 q$ Q6 b! F$ N8 m4 h' K                .release = led_dev_release,4 Q# Q  P! {, r4 J  X( A
        }
8 R" `' m3 _+ {/ B};: {  b$ H" n; s: m
3 X8 I3 v' P" q' l
static int __init led_platform_init(void); |* W4 d+ u$ \1 I5 P( h7 k
{
& Y. D7 U4 O, V" ~        int ret;- O0 |. g$ C, e* s- Q
#if 04 h# p# W" @; O+ [; ^
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
) ?4 v: l" v. F( l' Y6 @+ x        if (ret)1 {  M; S' I5 _4 o( n
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"* q# c7 W3 w4 K% e4 v$ C
                                "%d\n", ret);! _" R/ U' F6 Z# q$ M' _
#endif- s# i; L% o! \' ^7 ^1 O4 L: J' V6 _
        ret = platform_device_register(&da850_evm_tl_leds_device);/ c9 x* q  G4 z, `5 P& ]5 m" ~
        if (ret)
' g+ [8 A$ R4 N9 @                pr_warning("Could not register som GPIO expander LEDS");
  i, H' H3 D. ^- [; K& v9 k        else
% c$ `% l$ [# @5 z  c! R                printk(KERN_INFO "LED register sucessful!\n");
  \- m2 a8 g0 g5 f6 N4 |' P' b8 \* C# c+ `0 H# C& z1 F# _" V
        return ret;! k' t# \0 {( b
}
7 `; Y) z4 P" y7 ^
% T/ h' S+ g- S3 _9 ?+ x. ^* Cstatic void __exit led_platform_exit(void)( K' x7 H  m8 D+ @) ~+ `- E
{
1 ^* W& ^* c4 |, h9 C# Z- y        platform_device_unregister(&da850_evm_tl_leds_device);
5 d7 y3 P3 Z) v$ e6 s7 f, _  S! I( P) J: Q  O. Y9 O3 A6 d5 H8 C, k" b
        printk(KERN_INFO "LED unregister!\n");) ^6 {/ @6 N! V% G  z7 A
}
0 N4 [8 v- j5 j2 P* A) p0 q6 T' I0 S+ k8 j' y# `& t) P
module_init(led_platform_init);! K: @' P3 n- r* W1 |
module_exit(led_platform_exit);
7 U. t( }9 ?, h. k/ }* n6 r/ E/ r* i# y2 k2 O. K8 G
MODULE_DESCRIPTION("Led platform driver");
1 N# y9 I& w' _; @$ u" eMODULE_AUTHOR("Tronlong");
0 |! D/ I# m* R: yMODULE_LICENSE("GPL");, W; ~6 O7 F8 [- @& ?/ p

1 V7 m; q- I/ V8 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-5 17:47 , Processed in 0.042799 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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