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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
. H" b* H6 {! N- P( x#include <linux/init.h>4 R* ]5 l6 h" D5 J) F
#include <linux/module.h>! ~6 H# ]; O- I1 K
#include <linux/kernel.h>, y, R0 l/ f; b4 h' V
#include <linux/types.h>* X; t) l" i' ?4 `) b& h2 Z7 a4 }
#include <linux/gpio.h>
7 W, s; Q2 Q8 P8 ?  W#include <linux/leds.h>0 t" ]' p$ Q5 T5 t, e# O
#include <linux/platform_device.h>& K5 t: X( A" r# J$ l! d

/ f2 H/ [: D( [0 }! A#include <asm/mach-types.h>
8 Q- B& q. v' x6 E& g3 A#include <asm/mach/arch.h>
* y1 \: G: w$ E5 @' m0 L#include <mach/da8xx.h>" }( U3 g' l, L% ]1 n. O
#include <mach/mux.h>2 K# X2 w  x  n+ G
1 u$ h( p6 I0 l1 e9 K8 V
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)- m: n5 U' T1 f$ u2 a
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
! G" r/ t6 L) t. o. h#define DA850_USER_LED2        GPIO_TO_PIN(0, 1), i$ c3 E# ]7 E, m3 R- d5 V4 g' f$ x
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
9 v1 z; [# v- u3 z2 N' P' B% v/ d  C0 H0 x1 ^& R' R
/* assign the tl som board LED-GPIOs*/# V8 D# Q$ ^& A2 U
static const short da850_evm_tl_user_led_pins[] = {
7 J% }# ~" G- }/ A% U+ I+ g! |        /* These pins are definition at <mach/mux.h> file */& t) q( |) q% |: ~+ m
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
1 r; t. h  w" E5 R7 E        -1
# ~4 @/ y4 I" h. f2 \7 _};
; j7 L. Y# C7 B" Q1 u  T5 Q& s2 E2 D9 z) _* y6 p
static struct gpio_led da850_evm_tl_leds[] = {' v, x2 b  k9 u
        {
9 o8 `# K+ I4 B2 p+ d( D1 X                .active_low = 0,* p( V3 s  h# u3 |0 y; r7 z% q' P
                .gpio = DA850_USER_LED0,
0 p# R$ E7 a7 _" z- u# g1 Q                .name = "user_led0",. D: h  q: R8 x7 A) b
                .default_trigger = "default-on",
5 f' {+ K3 U7 e+ l, X* s5 O% B        },, V3 D" m$ D, F6 \- _- f$ I  B: ~
        {; ]3 r3 D! X# M5 y# U  B. d
                .active_low = 0,/ R% n2 n6 v! d5 j2 B& G
                .gpio = DA850_USER_LED1,! N; F3 d* L7 W, I* E! E; y
                .name = "user_led1",
! K7 e0 [, m: W! A                .default_trigger = "default-on",
. M5 ~: S  u! }        },# E) f5 G+ B$ m* b1 c- H
        {3 N% C) E  G5 U  d  d# E1 M6 m$ D0 k
                .active_low = 0,! I4 n9 X0 h- c
                .gpio = DA850_USER_LED2,- o) Z: P7 x: h: b' `2 H% c* [, X- L
                .name = "user_led2",
, L! {0 s3 a1 l( A5 x                .default_trigger = "default-on",
+ g+ A) c% V( x( ~7 @: j        },( L) e; o3 _- r- y
        {: _8 e: w1 R6 ^0 \
                .active_low = 0,; t& Q' u" e/ e& I
                .gpio = DA850_USER_LED3,- w7 |5 A3 x; k2 `- G
                .name = "user_led3",6 w! {) k! q% c0 G! }$ L
                .default_trigger = "default-on",2 K! W1 R; K' k+ T% ]$ s& F7 L
        },
; I" e' }) @- J, S};6 _8 q7 o! i: R2 m
; y' o3 A9 F8 r( t, O, r+ T
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
4 k: U, f0 b0 O8 A, a1 D8 Y  Q5 S        .leds = da850_evm_tl_leds,  h3 g$ o; [5 Z  h. G, ]3 ?6 C
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
) G% C2 g% l0 i};
/ G# \9 W5 n4 `. n0 Q6 |6 q! z0 w  c
* R8 s2 j1 H" s( q3 r  `static void led_dev_release(struct device *dev)
: c- R' K  g1 b8 n8 [{9 C! l0 X  B9 R# i0 H6 A
};3 D0 {  W) }6 c8 p
6 ~  c1 J( c* X0 o6 T
static struct platform_device da850_evm_tl_leds_device = {+ n; _7 l9 P$ S1 Y% a
        .name                = "leds-gpio",/ ~6 d) y0 ^+ j! |
        .id                = 1,: A6 {6 S# `/ R, _; u0 ?
        .dev = {. A5 I3 \6 Q5 C& Y
                .platform_data = &da850_evm_tl_leds_pdata,
: [; i/ ~  \3 V( y                .release = led_dev_release,! d! T6 j4 B! h+ D5 n* \& b
        }
. q& Q) J( P! D. l) w1 p# E( D  r};
) d* L8 j. _" z, Q+ I- p, K( c
7 Y& L( s& x7 u+ H6 {# d6 L% ostatic int __init led_platform_init(void)
7 A# }: }: z. B{" {8 w/ e) Y; C  L( l$ R3 @* Y- F
        int ret;
% F) V* h$ S5 o' C#if 08 X, \6 ]$ {  L( v/ @, C6 G5 K$ N) v
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
/ T/ |5 Y; k4 ^0 P& f        if (ret)8 x" I0 p. b6 v9 ?1 j7 \/ w1 c
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
) E% }5 a4 Z! c                                "%d\n", ret);
( y$ K, \+ k7 H& z  _" Z3 R* {#endif
4 b6 O9 ]  }5 A: @; G1 n0 M" d. e! w        ret = platform_device_register(&da850_evm_tl_leds_device);
8 l! @! W* E; t' a& O+ E1 T        if (ret)! I! s2 w1 D  C* E! ~
                pr_warning("Could not register som GPIO expander LEDS");
$ ~: B6 b/ L5 H1 `0 b/ k        else
7 @! S# |& U6 t# c& m" X                printk(KERN_INFO "LED register sucessful!\n");
' _, ?& ?/ k$ b: A: {) R" q" V- q, Z5 ~0 M7 A4 S: u+ G1 J" k
        return ret;
8 T# [3 r$ s4 n5 _/ `; a6 D/ U) @}
8 u8 `! u* z4 I' E9 k  W
& M7 R* G8 U& X2 d  d. vstatic void __exit led_platform_exit(void)
0 W7 {* O3 v  \( P2 }9 p- ~{
9 \' A# p3 ?1 A# E7 k# m        platform_device_unregister(&da850_evm_tl_leds_device);, o2 y9 C4 U! s5 ]- O% @0 f6 S
; E9 H1 J; V: o1 l8 |# @; T8 M
        printk(KERN_INFO "LED unregister!\n");- F  @% k8 J' r5 o% M; A$ ~1 ^
}
0 z, [0 H7 o& a; S  i9 W5 A, n3 ?* s- l8 b& V  w; r
module_init(led_platform_init);$ J8 j+ X8 n, r
module_exit(led_platform_exit);
  [! z7 |/ S& z! K: p- h/ F0 n6 U% _1 O! p1 i/ Q  A
MODULE_DESCRIPTION("Led platform driver");, m% o5 M" q- p2 T* }. T
MODULE_AUTHOR("Tronlong");; k" k/ b- ^: I6 y3 d
MODULE_LICENSE("GPL");
! T, j0 H( z/ @; }: t/ c" U! u/ V/ H1 c% T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-24 16:05 , Processed in 0.039021 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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