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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。, D9 D" ~0 q3 q7 a$ Q- C
#include <linux/init.h>
& t9 A9 L& G4 J' F( p3 N#include <linux/module.h>( U+ X: S' s; O! B
#include <linux/kernel.h>% f  T! @' j& Z2 ^2 U
#include <linux/types.h>/ @, ]) V9 `! H7 C! \
#include <linux/gpio.h>
; v0 y, v3 W4 Y4 M: d, D#include <linux/leds.h>% y9 _, a" U& `1 c5 f2 K3 V
#include <linux/platform_device.h>& h4 |  }$ o7 [( Y  _6 @
& J! M! X- l1 K+ O' m& X
#include <asm/mach-types.h>
+ v# l! m  x9 s/ v3 J7 J#include <asm/mach/arch.h>0 |7 e  E* [+ V8 D; G6 r4 s8 u
#include <mach/da8xx.h>
' S' A' U  [7 ^1 [0 K#include <mach/mux.h>6 E" O6 r8 P, @2 b  s! _) J/ O

" G& R1 P: ]8 v#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
& n. O& Y/ t7 k* q#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
3 F4 }6 n+ V( W% Q#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)/ Y4 g( |# g/ T6 A3 C) p
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
8 k( Y9 Z! x2 ?2 H+ h8 b1 j$ I+ L& K8 J1 o* ^
/* assign the tl som board LED-GPIOs*/4 `# Q. T& v6 n
static const short da850_evm_tl_user_led_pins[] = {
$ ?4 |! E  {+ H: f' w8 a        /* These pins are definition at <mach/mux.h> file */
- n8 Q- ^5 U# c+ [  ?+ O9 e        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,: g1 z2 @9 M& b% K" `9 _7 ~3 g
        -15 |' x3 I9 x/ i+ d: ]  Q! q7 ]
};
# q2 V5 b. v7 D% W* F5 P3 S: W9 r1 i/ v/ o' K; H  |: I
static struct gpio_led da850_evm_tl_leds[] = {5 v- O( L. |4 R+ h) a
        {
+ X1 m( Y% f% v; m' I; T                .active_low = 0,8 ^5 |8 g' c( H7 r$ R& h4 e3 g
                .gpio = DA850_USER_LED0,
5 Q3 F# a6 T6 l7 s# m" ?                .name = "user_led0",$ u% S2 Z  `: y1 E8 e9 _9 q3 m) o7 i
                .default_trigger = "default-on",
* ^- t. \  L! Z$ R& A        },, f& A7 a: I& I% k! o& f
        {
" _' w1 b& w( {8 v9 x$ Z/ Y5 i                .active_low = 0,
8 }. Z( _$ b0 U, `* G6 m, U  E* O                .gpio = DA850_USER_LED1,7 S' G  `9 {/ r1 h- H! o. [  t
                .name = "user_led1",
) I0 v# z7 i7 p4 g                .default_trigger = "default-on",
7 _3 Z* K' T# w% {9 I( G1 ]9 n        },
4 @+ @5 X+ P( c! e        {
- b6 H+ W8 E" e. k+ N! Y: f( \                .active_low = 0,, l: |; N6 Y6 c7 f
                .gpio = DA850_USER_LED2,+ {& m5 d& z2 ~; A9 l" r  A
                .name = "user_led2",
5 N0 U# j  T. b; S7 F8 @5 Q                .default_trigger = "default-on",( i3 F6 y# U% F
        },
; ]3 L* T5 E* r+ w) y        {
9 H. X4 O* ]6 \) ?# v/ u  N0 c                .active_low = 0,; w0 o' `* {7 ]# \7 v/ H
                .gpio = DA850_USER_LED3,
+ \' ^- J' d# }                .name = "user_led3",$ i: g% U% z: h8 T6 Z' M9 E
                .default_trigger = "default-on",
. {. ?# b+ L8 i        },8 h9 R1 \. y1 H- j( D
};+ g2 p/ c8 @5 e* t

/ M6 L. o" `8 j+ x, R( R1 t. Lstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
+ u+ J/ o4 ]& ^: D2 G5 p        .leds = da850_evm_tl_leds,
' g# h* K2 H. l/ r; Q        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),  y" K1 I; q& u# Z& \
};* p+ `7 q# [4 r: }6 h- G7 c
: Q+ O8 K8 R7 V: D0 U' g
static void led_dev_release(struct device *dev)
" @  `. D! d% R  @{7 R# L' W* g+ i6 u! p
};
6 K" O& [7 j2 x+ M2 b" C  d, [" C# Q1 l9 M- W  b
static struct platform_device da850_evm_tl_leds_device = {7 ]2 x3 N3 \" G' C. a
        .name                = "leds-gpio",! A7 z4 A3 `# C$ N4 x, i& s9 r% F/ @( [. i
        .id                = 1,- s, t3 x( C( F7 g/ m
        .dev = {
/ n8 ~1 z$ L$ X4 G0 O8 \                .platform_data = &da850_evm_tl_leds_pdata,( l# a5 m( B* ?
                .release = led_dev_release,
; H/ F! w5 K$ O2 L3 {" P        }
4 z* J6 `! V) D) Z/ v) ^" c$ S, k# v6 L};6 i$ ]/ {1 @  ?8 |5 S
. l1 u8 b/ y/ o- W$ v
static int __init led_platform_init(void)" u( F& s# C' q! ]* _; B. ~2 ]
{+ ^$ N: }. l# u, O2 r8 p
        int ret;
) V& x; |& b- L. w7 G8 I) u& S#if 0$ C- H5 J4 d' O
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
$ ?1 t8 n: e( w! ~        if (ret)
) Z) j+ H  t9 w3 U3 d- M/ l                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"1 B. S+ c) [! ?: t$ C
                                "%d\n", ret);/ j% o6 U! D& r3 p6 P
#endif
* L6 w9 |1 ]% z) w( v0 W        ret = platform_device_register(&da850_evm_tl_leds_device);6 f7 s5 M) {% A; \# H2 N
        if (ret), o1 Q0 F  }' c+ o8 C& M7 W, A9 ^1 U
                pr_warning("Could not register som GPIO expander LEDS");! n, Y; I5 s/ {" [, b
        else0 Z& b3 e4 f7 o' A" O- \/ b
                printk(KERN_INFO "LED register sucessful!\n");
( X& q! z3 B2 Y/ M% R8 w( L6 q& R7 z+ t
        return ret;
. ^) K; U% F8 b. B; L. N}: a9 k+ R6 R; ~- e# G
! K3 S% P4 A  s0 E% ^
static void __exit led_platform_exit(void). U7 {8 @1 s% w0 J" X& ~
{
- L. N; d; B9 l        platform_device_unregister(&da850_evm_tl_leds_device);+ _0 {9 S- y1 ^4 T  h/ J' [

; y% u8 G) {5 v( F        printk(KERN_INFO "LED unregister!\n");
, ?6 T1 d6 ]1 H- C0 c% {9 t3 m}
3 O5 Q1 U* S3 Q* y' |0 z9 j+ M$ G$ V, n5 D  m  U5 @, ^$ X4 O/ @
module_init(led_platform_init);
* _2 a8 \$ \& t0 Gmodule_exit(led_platform_exit);" h- E; e" l: k# J& \! C% j4 P

/ [' ~! c4 S9 @) n4 e) m6 C" U3 \MODULE_DESCRIPTION("Led platform driver");) j. i  m% o& b
MODULE_AUTHOR("Tronlong");
; n( D" W/ j: {/ Z) HMODULE_LICENSE("GPL");
. b, @4 ^1 y, C2 g) t* s4 l- b" j) i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-20 03:04 , Processed in 0.242024 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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