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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
" D: j. t/ Q4 j/ c& c: Q#include <linux/init.h>+ M2 V6 E& j1 i* X% i
#include <linux/module.h>
* [  Y3 E. \( M#include <linux/kernel.h>
6 k8 z2 w0 c+ q: D( U8 v  L#include <linux/types.h>
! b/ x7 c. K8 g* s#include <linux/gpio.h>
7 a  q6 Z8 Y3 t  s0 f+ D1 }/ |1 ?#include <linux/leds.h>$ _; _5 B3 |' ?5 R2 M: j
#include <linux/platform_device.h>
. i) \( [1 r5 Z" ~# a/ M, V. G9 f9 G
#include <asm/mach-types.h>
9 l% t& ?% P+ v; X! v6 G" N7 m2 S#include <asm/mach/arch.h>2 g! D! w% l/ q# s: ~- \3 f
#include <mach/da8xx.h>
7 |1 Y4 M: T& @#include <mach/mux.h>2 E; J) i! ^9 K5 N% P* S! [

( u: V8 f" e2 g) ^2 v+ G#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)7 m- w% ?& h' E) u) [2 [! m
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
9 u8 I9 N$ y" m7 V" I; }2 l4 j#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
! k2 J4 \4 G; [8 \& f! `5 O4 C#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
5 ~1 K  ]' e% ~" d* b9 U) b! y; ]" j' M) ~3 H$ ?! I! m0 c0 O1 N
/* assign the tl som board LED-GPIOs*/+ x; h# E" R: \$ j7 X
static const short da850_evm_tl_user_led_pins[] = {
) A! z1 g9 P9 d/ o, w        /* These pins are definition at <mach/mux.h> file */
$ f, T( W$ W( @8 Z' h1 Z& S) u3 p' v4 q        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
6 d3 t# w. v: C& `5 F: o5 |        -1
" M" f3 d6 m) D0 j8 v* w5 j};, d7 _9 p& X) G2 r7 X

6 e+ f* l- B2 I/ M4 v5 M, N1 V' Ystatic struct gpio_led da850_evm_tl_leds[] = {
4 V. ]2 e' e: r& @3 D        {
' t% M8 x- x+ M# p9 W' c# {6 z                .active_low = 0,
# @+ c5 W7 J. C                .gpio = DA850_USER_LED0,+ C9 c' X- H" k$ u, L9 h! y
                .name = "user_led0",
) d% K' J: L& p; L; t) v                .default_trigger = "default-on",. h* y$ |4 \! P0 r/ @
        },
  ?) i6 e9 e" d) v7 X        {' F! O0 z& k: L" d" B4 l
                .active_low = 0,# y: y5 I' T& ?& J0 V8 J3 K. ^
                .gpio = DA850_USER_LED1,
( {& V, O& S( F7 c                .name = "user_led1",6 w3 C2 P9 ?) _& m8 M$ ^; q
                .default_trigger = "default-on",
9 h+ t6 i2 @4 _! M: j        },% y7 g- m9 O: v: h+ S+ W
        {- t( m* v5 P! c' F1 I$ G6 P8 ^
                .active_low = 0,) p1 n: `" [0 N: D* V
                .gpio = DA850_USER_LED2,7 u' R9 k, }# T: J" y4 X: q
                .name = "user_led2",6 U- k( S/ @* i& U
                .default_trigger = "default-on",
6 n+ Q4 H! k& q% O( \1 V# l        },) J+ e" v/ t9 S+ |+ U5 N
        {
/ x: M% _+ T: U- L% y: p. W' P                .active_low = 0,! w3 T2 f8 m3 j. o/ f
                .gpio = DA850_USER_LED3,
( x+ Z& N/ B; x' u3 b                .name = "user_led3",, K% `7 s, [6 z& z4 S5 H" d, L
                .default_trigger = "default-on",
, T( b% {! ?* o5 \3 @& z3 L        },3 u' J2 |! C) |+ X( O
};2 d7 P7 Y2 t7 C/ _& l; F$ p

  R1 h$ _) i2 I8 ~1 Dstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
" ~& @$ l# |/ j6 ^, i+ X        .leds = da850_evm_tl_leds,
0 r& m: a: ^: ?2 U9 V/ S3 S        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
* Y" O# n* }& f$ ~/ ^# F};
+ ~  W9 {) t6 F: ?' k2 ^# d
, \4 k- ^+ _/ l+ Dstatic void led_dev_release(struct device *dev)
3 m7 O8 _( K( J: c; L2 E{1 j2 I# |* b1 ^9 ?- I# O1 Q$ z: _8 s
};! l# k' F, t& g  _9 |+ ^5 J

* S& \" i! w% B' N0 `+ ~( T6 A; B7 Nstatic struct platform_device da850_evm_tl_leds_device = {
$ y) }7 h4 a$ X; g( L% J! ]3 A        .name                = "leds-gpio",
7 M9 C; E* I/ O) F9 A% s* h6 ^        .id                = 1,
! i, B) O4 L0 }; \        .dev = {
' x- l* d3 q2 ]* u; M7 ~                .platform_data = &da850_evm_tl_leds_pdata,
8 C- \6 i! E' L3 q5 r                .release = led_dev_release,& p1 F0 f' t+ a- J, U- J1 w
        }4 S) l% [7 }" @; J! ~7 P
};' v8 r' e, ~$ x/ O
& M) ~2 y% ?5 y
static int __init led_platform_init(void)
& y4 @, F" S' }" r% @' E5 M3 a, t{
1 U9 ^& H# Y7 F. e        int ret;  k$ r  e$ c$ H# w9 ^
#if 0
4 K4 j# e) T: \  D+ F% G3 \        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);8 P* j9 w6 q/ Y8 S* V, }) k% C
        if (ret)
, q4 B. y. N0 H9 I5 e% B                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
% _+ ^9 Z- e- X6 ?                                "%d\n", ret);
  O& S# h6 X5 ?& s& y#endif
( q$ g, h8 l, N; y        ret = platform_device_register(&da850_evm_tl_leds_device);
6 i2 e+ E9 V  M: M        if (ret)
6 y- H. p) s# S9 {) L                pr_warning("Could not register som GPIO expander LEDS");0 \: T: I, f9 f2 u; D
        else' [4 @+ s3 a5 z3 V4 h0 w: K
                printk(KERN_INFO "LED register sucessful!\n");
0 `/ V' P, q4 C8 Q1 s- S8 n
3 S$ Z# R/ O  @+ `0 Q5 q        return ret;! f  }: f$ R( Z6 b% b: u) _) c
}
( `1 Y+ N- O4 s+ K: l, e" r! e. @2 {+ O% l; n0 S9 x
static void __exit led_platform_exit(void)
; d- ~- F5 B. Q4 ^, C{
6 {, p4 Y8 \% {$ b3 ~        platform_device_unregister(&da850_evm_tl_leds_device);
' s; q' C# r9 M" I( o
: z, e9 T# j4 d0 p' @        printk(KERN_INFO "LED unregister!\n");
' X( j0 [4 X- f$ C4 o- N$ R}1 \; e- Y! k% ^1 C- R

: a$ o( ?7 o  x& f. E- I: Gmodule_init(led_platform_init);
1 ]1 l2 W; k4 T; Y7 @- c2 wmodule_exit(led_platform_exit);( x- {0 a) u) R* o) w: i% @
  d* {$ u; N8 P  q9 d: l
MODULE_DESCRIPTION("Led platform driver");
$ K  ^; N! G, W0 f  _MODULE_AUTHOR("Tronlong");  L6 ?3 R- N0 @0 _/ y
MODULE_LICENSE("GPL");6 ]1 A( S- t/ U( }2 |( ]

1 y" v0 [! q; U5 t) F8 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 15:38 , Processed in 0.044746 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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