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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
; r/ J  Q% y9 q5 I! y9 |( M#include <linux/init.h>0 @/ E, q8 c0 Z
#include <linux/module.h>; u! X% G# V6 V; }' ?! O
#include <linux/kernel.h>9 K+ w. }0 h1 e! W) v/ t& N: |
#include <linux/types.h>. K& p# a7 y& }! [7 |% p  W
#include <linux/gpio.h>
- V% B9 a$ P* }, A. n3 g2 [#include <linux/leds.h>/ j* w) p" j8 A9 j0 C9 C2 ?5 f& P& ^3 Z
#include <linux/platform_device.h>
4 r1 {0 z3 x! ?8 t" G! R. r# v* v1 ~, n# b# P7 e) E1 \* `
#include <asm/mach-types.h>
' c; L+ x  n6 Y: P9 u#include <asm/mach/arch.h>' ^& A; `2 d8 c, s$ `: ~6 V# B* n- B
#include <mach/da8xx.h>, ~! v0 }$ w2 J3 D/ p
#include <mach/mux.h>, E9 e$ Y! c" i( d3 _
6 ]) r$ Q  K" P" p: Z
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)% H; d5 [$ F. i! d1 N8 P6 ?) \/ W
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
+ p3 D% K) k) F! c4 z- P. K$ t#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
( e$ k- R  S* b" R# c# Q, R. ~#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
2 S7 U9 o; Z! v; v: w9 m# n; z& e8 c. H9 v2 m
/* assign the tl som board LED-GPIOs*/4 M3 R( m! j1 E
static const short da850_evm_tl_user_led_pins[] = {
: f1 g  O. A2 P* N. p' z* L3 h        /* These pins are definition at <mach/mux.h> file */. i$ f% i+ q5 d: b- x
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
- z9 _# U1 U/ A  G( y        -11 f6 x+ h! u5 y
};+ @. d% [2 l: n  s: F, V

- c2 Q- t% w" p8 T9 hstatic struct gpio_led da850_evm_tl_leds[] = {
" k  j- f" e5 K% O% V        {2 y) y1 n! ]4 K' |
                .active_low = 0,
2 @9 _4 D9 o* a. w& z                .gpio = DA850_USER_LED0,
7 d# d: k3 Y7 y; {                .name = "user_led0",
" U% D* l1 [8 k9 x  K: ?9 M+ c                .default_trigger = "default-on",4 j! }: r; |* t8 Z8 t  A1 I9 O
        },
+ b2 ~1 x  v& Q( e4 @/ h6 u        {% m0 i4 d: Z+ L! B3 n" r
                .active_low = 0,
- ?+ [6 s. X/ F7 M$ |2 l                .gpio = DA850_USER_LED1,
2 ^( y) C% z$ j6 H. @% n, q                .name = "user_led1",5 `+ R! g* {  o+ D; }  ^* I9 B
                .default_trigger = "default-on",
3 Q' Z* l" K: t0 j+ I; F7 _( A, e        },0 c  t  \+ F% V9 G
        {( I& _' z2 e, r+ B& H) r4 z' H
                .active_low = 0,
. d+ z. E$ {3 P3 B                .gpio = DA850_USER_LED2,, m+ N- R+ _1 `8 u3 y
                .name = "user_led2",& T$ g% Q! C. G- v- ]- \" u
                .default_trigger = "default-on",6 }$ W7 @3 k; O! N  {, ?& s
        },
/ E* D7 C2 U$ Y# {8 m3 m        {# G$ r9 S! Q% e, O
                .active_low = 0,
. `- P4 v' w6 @# {% Z) r+ O                .gpio = DA850_USER_LED3,, T( I0 K7 L- L7 Q) [9 S
                .name = "user_led3",+ R! H4 y' p+ V+ B( k3 {
                .default_trigger = "default-on",
8 B: @; u: N; h* T9 s$ p+ ]        }," r; c6 I% o# S0 o
};
, I2 U7 E4 ^# s3 k( L0 S. c0 t* J0 @' p4 \; `" J! u
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
% w- ~& J; g& O- g+ i) ~5 K        .leds = da850_evm_tl_leds,
2 ]2 T  G/ L" E$ W. L        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),5 u8 x5 n5 D) n+ r8 l) l
};% K& \9 e: G' \' _# \

+ f/ e+ n2 [5 A- istatic void led_dev_release(struct device *dev)
+ S3 I; k( I6 ]; Q! e- O" o{
- |& L9 z1 N* u: z) Z};! ^8 x5 s9 b1 ~# _3 _& b

4 x: m! N1 \' Q' D( {8 |static struct platform_device da850_evm_tl_leds_device = {
3 ~( u& a0 O- L. z        .name                = "leds-gpio",
% ]& ^# t2 k# M& g/ n0 v  E        .id                = 1,
% o# A5 B' O: h( X) {( E( J        .dev = {
+ k7 t7 K! ]: A) }9 D* K" X* V                .platform_data = &da850_evm_tl_leds_pdata,
% @" q: `/ N' g, {                .release = led_dev_release,
" }* @3 s( s3 z1 U2 Z        }
4 a& \/ |6 i3 X+ {/ N, h};" D, S- C  t' U1 I7 _/ p

' N* |% B, d2 @, y# M1 K' }* U- pstatic int __init led_platform_init(void)
3 K  P: q8 U( e; `{
2 b# I- q" _1 e9 d, \        int ret;2 @& b% w7 S7 {2 F) l6 `$ M6 Y
#if 0% r5 g2 p7 T; M% F' s( E' r
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
0 ~9 ^" G& W1 l+ q+ \0 C        if (ret)8 O/ u, K9 Y& @/ U$ R, \0 S3 U. e
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"$ I. R& ~: E# k+ G* j1 {
                                "%d\n", ret);
7 n+ J% U& N& ~: R# P#endif
' N# |$ B( Z5 {; M- _: r1 G8 T        ret = platform_device_register(&da850_evm_tl_leds_device);
& ]& ?& o) q. a3 Y' I        if (ret)
5 Z3 \- U0 Q4 t% d8 W                pr_warning("Could not register som GPIO expander LEDS");
  _) g8 @3 V  U- o- [$ m1 n        else: h/ V  ^. @2 e, w6 D: {, G& ?) X
                printk(KERN_INFO "LED register sucessful!\n");$ l2 w# `$ v6 ^/ u! C2 A- ]
+ D$ v+ l, \4 q0 ], u, S) C8 B
        return ret;  o' D/ q1 F5 @
}
3 E, N' z" G) }0 a5 }/ S
5 l$ Y' W  P4 u8 ^5 m! c) `# j! d8 _( mstatic void __exit led_platform_exit(void)
" ?  R; b; B! n{- N" X! R) C+ X; K9 l
        platform_device_unregister(&da850_evm_tl_leds_device);
6 n% B. s# H0 s! N
8 J. I2 Y& v1 E! C# r        printk(KERN_INFO "LED unregister!\n");7 j. [3 |5 \, H: `
}
6 t3 r: m) ?# i' Z
0 ~7 L  d; }( Kmodule_init(led_platform_init);% t6 i7 _, ~  F6 O
module_exit(led_platform_exit);$ c% n1 ]" u- L/ u  C2 t

% U! N# S( e+ ]7 v: Q. ^/ bMODULE_DESCRIPTION("Led platform driver");
% U! q& s  T. e- P$ NMODULE_AUTHOR("Tronlong");! m: W/ t6 @8 `: J/ K4 k- i
MODULE_LICENSE("GPL");/ \8 X! Q) ?+ x7 j9 F
9 F+ F& k8 [0 x" R4 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 10:30 , Processed in 0.038913 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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