程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。; G1 f* N) g5 R2 n& W; ^" `: K! |. f7 @9 p
#include <linux/init.h>" P* k/ U9 A- W! _
#include <linux/module.h>  Y* |/ S1 |2 P* a7 H
#include <linux/kernel.h>& L% a0 j& O4 N3 K0 c
#include <linux/types.h>
' l1 z8 z1 b' h& ^2 k$ I#include <linux/gpio.h>2 t" `" j8 w+ B# |& ]* V! h
#include <linux/leds.h>
: ?+ E- v& ~+ ^0 I#include <linux/platform_device.h>
; W) r8 p8 @& M7 |" \9 g4 t: w- W
& X+ |' M8 I) H4 q: q#include <asm/mach-types.h>+ A. k( M5 {# r
#include <asm/mach/arch.h>+ G; V% [0 I" \: l8 i
#include <mach/da8xx.h>
6 _) _$ ^" V; j9 T( P#include <mach/mux.h>
) ^( G2 j  x; x# F9 q* P& U' g" r' ~: s1 N# w7 V
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)3 g# D" R! b4 b  M) w: a  P2 l. c
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5). ?- a( d" c% Q) d
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1). r- u+ t$ P$ I' Y7 h, x' K2 M2 p+ |
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
& ~2 g5 M5 ~5 \0 v! @# z) S' ^; _/ ~" P% Z. V& U# p1 Y
/* assign the tl som board LED-GPIOs*/  ]' W0 \( Z7 D- ~5 Y) y
static const short da850_evm_tl_user_led_pins[] = {
" M. S, u) t/ t' E/ `: u        /* These pins are definition at <mach/mux.h> file */. e- H% ]9 e8 {5 Q
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
* v& u- E8 \. L: Y) g1 p        -1
% d3 w1 I; a7 J$ P/ ]4 E};
' y6 l/ S+ \9 B8 ^0 C" d! |; J: F# H1 p! A! ]/ k
static struct gpio_led da850_evm_tl_leds[] = {* N1 w8 W1 D1 L+ w5 w" J
        {
6 k  H' G, ^( v% C$ q                .active_low = 0,( f& I& @% d9 h% d, `
                .gpio = DA850_USER_LED0,$ p4 o+ `" t" g+ Q* v4 G; b- y
                .name = "user_led0",
% l9 D% ~" P# A! i) M7 y: R                .default_trigger = "default-on",
- R% F& K8 A+ v8 b/ ^0 a4 V        },: [, y" C/ K9 {3 Z
        {
, u. W% @/ L" W. P$ a                .active_low = 0,/ w! R! X7 P4 |3 H$ j, T
                .gpio = DA850_USER_LED1,
" O& J. }! p, d                .name = "user_led1",
* |5 U+ [# [, w+ t, ~: J                .default_trigger = "default-on",
1 L+ f3 S, n) T- Y$ e' R- U# `& ~        },
0 Q; o; s" ]& m/ O' G) F$ Y        {
! [) _4 R  V2 t* {8 C                .active_low = 0,) x1 @3 Q$ N6 P
                .gpio = DA850_USER_LED2,
7 Q% E: d' D9 w8 e8 l                .name = "user_led2",5 b) a4 y$ n) Q. h7 T
                .default_trigger = "default-on",
' x7 K3 v4 y' `; K9 u+ f4 X        },
0 r; O% R0 O7 J4 ]/ r5 {. G6 ^% h% k        {; k& W5 Z, ]  a1 f0 s( A$ n4 A
                .active_low = 0,
  S* n  o9 o: ~                .gpio = DA850_USER_LED3,
" M# r/ i" p. B7 Y( ?                .name = "user_led3",  a( B) [, S/ {+ R' Y
                .default_trigger = "default-on",2 S" X7 H9 `, Y6 F/ W$ j
        },
, I6 p( w1 H9 o! w2 ]; J  q};2 [5 o+ K- M3 s+ X
' D4 U/ z# a( V9 M$ O$ C$ M
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
% t% o% c* M4 M  u        .leds = da850_evm_tl_leds,2 A6 X% b. }8 D4 K2 l
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
9 M% @" O3 i5 W" c) {7 V+ {3 d};
+ G1 T" X! X" M; U7 o( C, x! F1 O7 u2 c- C3 r: o6 A9 Z. t
static void led_dev_release(struct device *dev)9 [+ E" K" R6 n5 R2 n% h2 Y' `
{; g" J2 k  [& Y" C
};
% L/ A# v2 [) v8 O4 I* t! Z7 `- c" R
static struct platform_device da850_evm_tl_leds_device = {- g" S7 m7 S% r6 @" z& x
        .name                = "leds-gpio",4 Y- w* z& f, V
        .id                = 1,
+ m* p; d) K# }- q5 P% |  I; ]        .dev = {( Q" a4 I. m& [4 j) i5 L. H
                .platform_data = &da850_evm_tl_leds_pdata,+ o5 U0 w' e1 m  v0 X5 }
                .release = led_dev_release,
4 }  j! Z+ ^1 Z4 f. ]/ b6 x/ Z. r        }" W7 z/ B% ~% ~! d2 W
};
( ?9 C: m2 T1 Z& G* a' t2 f5 z5 @6 X
static int __init led_platform_init(void)
& Y! ~6 p0 H3 v# ^{9 f7 D6 W# w8 n# Y
        int ret;  u( E& I: ^2 }# h2 N
#if 0
9 {* |; y1 z: G2 a5 O$ u        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);4 m6 W0 _4 _4 y5 p3 T% A6 @* o
        if (ret)
1 f5 [9 G  h; [6 V. i' Z4 v6 D                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
& P9 d2 ~0 ^9 p2 j" u1 H, a+ E+ n                                "%d\n", ret);
* {* ]4 P. S4 i/ g8 i9 j#endif
& ^* R* U! {0 T4 @: R8 {        ret = platform_device_register(&da850_evm_tl_leds_device);
( H. j/ V2 ?7 m6 ]        if (ret)/ H; C' D) |- @. [
                pr_warning("Could not register som GPIO expander LEDS");
/ }% ]( V( E3 n7 C: p5 R: \  O( \        else
1 `5 p8 U! |2 T4 ]5 ^* e                printk(KERN_INFO "LED register sucessful!\n");: x# q. a3 m3 p) o  F

! y4 {4 u7 a; ^: N; D" f3 b8 X6 X        return ret;! @; F3 p/ y" M& E
}
+ v: N  o1 U5 M. k1 |! }+ m9 r1 w' O& R/ d" f- N& `% _# c9 w- x& [
static void __exit led_platform_exit(void)
& l4 I9 i2 ^( p4 p, p{  k) ]  \; f! l) g+ n7 q; B8 s4 E+ k0 @
        platform_device_unregister(&da850_evm_tl_leds_device);- v. P: Y" S3 z' ~- L$ |
  t/ v. Z7 P5 }
        printk(KERN_INFO "LED unregister!\n");5 j- G0 O2 e$ T& _7 a
}. m# E# B4 L3 ]! f! K2 N: D/ I
+ ~% I. T- z9 k$ P
module_init(led_platform_init);9 c+ k1 e3 J8 _6 O. b. O3 k, n# k
module_exit(led_platform_exit);9 Z9 v' B0 j: H

% K4 A. g# g/ a8 `7 B; z3 F" e8 OMODULE_DESCRIPTION("Led platform driver");3 q$ p; t' [" W7 ^9 F& S: J
MODULE_AUTHOR("Tronlong");
! U. }2 D6 L7 V* H! a' t6 M0 LMODULE_LICENSE("GPL");: x0 c) T# |9 u; h1 L6 n6 |
& Q9 j7 b* X- _  q( n0 l; \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 14:43 , Processed in 0.039127 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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