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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。* ?' l8 n. n  E3 d8 ?( i0 k
#include <linux/init.h>* S3 |! k, x$ }# I' a( R8 g' @
#include <linux/module.h>
% b5 g# R! `4 G3 k- _#include <linux/kernel.h># Y, x$ S# b1 z0 F  }, v$ B
#include <linux/types.h>1 ]) W9 j/ B8 X: C/ V; [
#include <linux/gpio.h>3 q) }' i* R; d7 u* Z/ Y
#include <linux/leds.h>! S* e! D: M5 f; r' k& [
#include <linux/platform_device.h>
6 C% m5 a1 q& \- R( u, ^! f+ `
; {; {* E2 b  H: z9 Y: q: O#include <asm/mach-types.h>
) a( r% ?7 e- k# E#include <asm/mach/arch.h>
9 t2 c! v5 d$ E1 R' G6 ~) ]#include <mach/da8xx.h>
. z! q1 X7 Y# }# F% O#include <mach/mux.h>/ U  D7 k6 n* h  {7 ^. C" S/ ~( R
9 m& a& F( b3 l$ P& @
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)+ H8 b1 Q$ ~% q8 Z* J
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)1 H  V7 t3 p9 a* ^7 m! a9 {
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)7 O3 b& c3 H- z& E' K8 K. p
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
+ j6 W" ]- A/ q) P7 {, m& [* U. {
2 }0 x8 r& M) z- l: I' h" c/* assign the tl som board LED-GPIOs*/  X$ q9 u  E. M# G
static const short da850_evm_tl_user_led_pins[] = {
9 J& ^& S; z1 R  Z        /* These pins are definition at <mach/mux.h> file */' T2 u, Z1 A& R' b, d, `5 }# i$ e
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
7 W7 L7 T0 u( Z) ~1 \# P, |) L        -11 W: i# t! p- y
};
& T# E! ?; O9 ]$ q( G
; V5 h; b5 y* B, K: qstatic struct gpio_led da850_evm_tl_leds[] = {- ^" v1 @+ z& z7 |. W
        {
5 v/ s9 P( Z! j9 t, e6 g                .active_low = 0,8 U+ @9 z  m# k4 E
                .gpio = DA850_USER_LED0,
6 O( b3 j* h4 M. }4 V                .name = "user_led0",2 j' X7 I* L4 j8 \
                .default_trigger = "default-on",
1 P6 B- S$ v! ~! w3 X6 q        }," ]; Z) m) H- N' y/ F
        {
: u, M% k+ p8 r- H; A* j6 d2 q                .active_low = 0,
5 P0 a8 }' ?6 b( Q                .gpio = DA850_USER_LED1,& _1 l( b; b: |8 V/ t" G( i
                .name = "user_led1",6 b. U! K$ T1 }6 j$ J; k
                .default_trigger = "default-on",
5 [- F& F2 k; O        },
5 I" s5 F5 u4 d' X2 O  s- Q+ L        {; K) M+ Z$ _( ^6 [% g0 H$ S, B
                .active_low = 0,( |. m$ T# P) ~# s4 Y
                .gpio = DA850_USER_LED2,
/ z8 [/ K* V* ^0 l( b                .name = "user_led2",
, C* ~' J5 q+ h. o                .default_trigger = "default-on",
. U+ M  O; a9 `  x        },
* h# j. L- R; s0 P$ ]* q7 A. N        {  k3 X( k6 v- {# ?" ]7 j. S% r
                .active_low = 0,& b) ?: L& `) l3 r7 p
                .gpio = DA850_USER_LED3,) k/ g# ^* b8 w+ S6 ?& |  O
                .name = "user_led3",
6 T; m# I; G! ~4 X9 J; p1 [" r7 f                .default_trigger = "default-on",) Z! g5 A( ^) }2 E9 L8 E3 `
        },
. k( o5 a2 ~/ Z7 I: k};0 q' u6 `- k( i3 J* N3 L4 \) h  T% m

: b/ j8 ~7 R, f' n! Z9 Xstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
+ g. C( V1 a! B& `        .leds = da850_evm_tl_leds,2 G' X7 ?3 a1 E0 e  O8 s) z& _
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
9 c2 I9 F, @0 G! Q$ V' c+ ?};! H7 p1 R  M# }6 L7 ?; r

2 d5 Z, }) z% ~; R, cstatic void led_dev_release(struct device *dev)
2 J  D- L( p, h3 J. E7 ^* c{6 a0 w6 M& [5 f4 ?% W- o
};
# D8 n2 q: f. z2 I
% k9 F' `% U( _0 l9 h3 U9 m$ xstatic struct platform_device da850_evm_tl_leds_device = {3 B  o2 z( r$ y( L
        .name                = "leds-gpio",. u4 P5 D9 N0 F" e6 i& ?
        .id                = 1,7 M9 w2 L6 B6 R# P! e+ C
        .dev = {1 C8 o2 B9 d# Q4 Y
                .platform_data = &da850_evm_tl_leds_pdata,
9 a$ L. f6 W: N0 J' H! i+ R                .release = led_dev_release,- d6 H: U0 ~+ u+ x
        }
. E2 X" }, j, K& e};" q( v% O" F: e" y9 Q9 y
0 v/ d0 L* t1 ^! T7 T" X, T1 _
static int __init led_platform_init(void)
& {1 i) S7 B5 e; v5 l{
1 S' z& g  Q3 `        int ret;
+ Q9 {* B, T0 n) n#if 01 n' Z5 \  F* W
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
" G6 ?1 W- x+ l& @, L& j1 v9 e        if (ret)
# M/ C  Q7 J* Q/ A6 [% F9 @- ?2 K                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
0 ]8 J$ A) V6 y! F! H7 m7 Y1 \                                "%d\n", ret);( s! n+ z5 ~9 R5 D0 n
#endif/ }) L6 v( D& {# F* C/ A) J0 Z$ ?
        ret = platform_device_register(&da850_evm_tl_leds_device);
* \* F0 \' W! T6 Q1 A: \        if (ret)
& W  {9 Y. u1 ^8 d0 J                pr_warning("Could not register som GPIO expander LEDS");
# P" p7 P8 z" I2 V" ^8 w        else
' j0 A; U3 s9 O0 t+ M2 s0 d3 i                printk(KERN_INFO "LED register sucessful!\n");* P% ^3 k& O8 p6 V  a
# R1 S$ |. g& W- T
        return ret;
% B  W# q' B% Z4 ^/ d9 r}
0 H2 w- E+ [2 P# Q9 x7 m7 y1 \  A/ a# F# a; ^
static void __exit led_platform_exit(void)
5 X- b4 o7 }7 D! [1 @{
7 u) l: |/ b. N4 Q: x        platform_device_unregister(&da850_evm_tl_leds_device);
9 W  v- Z% e, T7 Z: Q# v' M& A1 s+ _% O$ b" Y/ P2 }4 K: r
        printk(KERN_INFO "LED unregister!\n");' U& B3 o% h* c. M
}3 q3 f# \* q$ z" E# i, M! C# `+ s

9 N# e9 ]6 X: G7 D* Jmodule_init(led_platform_init);
4 N( q( F9 \; L- P5 H) F. tmodule_exit(led_platform_exit);
, Z1 b9 K4 c0 P) G. o/ W
# R$ P* B; B! G5 LMODULE_DESCRIPTION("Led platform driver");
, w5 Q0 D" u7 C+ [7 u+ HMODULE_AUTHOR("Tronlong");
) ?( o$ |3 B9 e3 YMODULE_LICENSE("GPL");
7 D4 i, a( B0 Y; P+ p" a  Y( n
; r" ^: K2 ]/ n' ~! X2 |8 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 01:13 , Processed in 0.040764 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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