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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。# y9 B2 q7 N$ y' k) c
#include <linux/init.h>' s+ \( N% Y# T8 ?" R
#include <linux/module.h>
' w& J8 |. u; i. X#include <linux/kernel.h>- U; ]  \& B* m, {
#include <linux/types.h>
% W5 x% L( _" o! m#include <linux/gpio.h>. k4 u& L" S. T  Z) c
#include <linux/leds.h>! i; `/ M! k% N1 W+ x. [' T, |
#include <linux/platform_device.h>
6 ?8 V7 h! `4 W; S( n8 H& D( t
: d5 K- Q& l: g; n! q#include <asm/mach-types.h>
* A6 c3 g8 b$ o#include <asm/mach/arch.h>/ t0 ~; ^! G+ N8 P/ j+ h) i% O
#include <mach/da8xx.h># i) W& _9 O& f0 |# a2 s
#include <mach/mux.h>* {2 p5 ]# N( @5 _

9 q% [; F  f0 o" ^; B3 J#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
2 D" u3 f' a8 o' Y) |, \: i5 j. U6 K#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)9 p$ Y8 N. q$ w" M# q$ V4 b
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
  R7 F8 |5 N4 B% `9 z' W#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)  K! }( D- }8 U/ z( o1 o

* z) f) k& ^' M& O  R, ^/ I  @/* assign the tl som board LED-GPIOs*/# I( ?  b. R8 n0 f$ i$ c
static const short da850_evm_tl_user_led_pins[] = {6 C+ D1 k8 [- N% @9 a+ z
        /* These pins are definition at <mach/mux.h> file */) t# a. g; T1 J4 z/ q5 j4 @- i+ O
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,; y  p, z7 m; L3 ~
        -1
9 s; I( ^8 O8 X};, Y# H3 z* ?6 p! i2 {- y" I
' u' T5 Q" }! ?
static struct gpio_led da850_evm_tl_leds[] = {) [2 q/ m' N$ s3 u
        {' r% D% w: _* [# q9 e
                .active_low = 0,4 A0 O' \- N% e$ H! o) j
                .gpio = DA850_USER_LED0,
; y: c5 o. N# r                .name = "user_led0",/ ^" _3 j- b$ U1 |, X8 ?% Q
                .default_trigger = "default-on",
( H4 e) \7 s; E2 n        },
6 U% ^% D# y' Z+ A; z        {
' ?* c' [- `$ k. h6 y: ]) W                .active_low = 0,! X$ l% i- e8 g# N- h9 x
                .gpio = DA850_USER_LED1,  |. b; C3 W- j/ ~0 L& O( s3 n
                .name = "user_led1",
( _( U; b8 f8 @2 ?                .default_trigger = "default-on",* l: a$ d/ f, w# j, A
        },  p5 r1 V' P# t, Y, A6 m: M
        {& u9 g8 ?  s( j
                .active_low = 0,
/ j, r* A: n, m; A5 a7 ^                .gpio = DA850_USER_LED2,
: o1 b- _0 r! p                .name = "user_led2"," b+ |/ P1 r3 @- t9 I! D4 V! p
                .default_trigger = "default-on",
* E5 I  o/ ^5 C  P' s: O        },& \+ l3 L7 E$ o
        {2 ~$ J/ L+ i9 ?! F: i9 M; v
                .active_low = 0,
3 w- L& J% q  R                .gpio = DA850_USER_LED3,( @& |. [1 Q$ ?  G- l7 F# b
                .name = "user_led3",
. H  q2 J* Q. {' D6 i                .default_trigger = "default-on",
/ x6 N  T6 T' Z4 X0 S        },
. Z( G9 [1 T3 u% |+ U};$ x+ k; m9 w/ X- @

! J( o9 G- s) d: s( {static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
8 D2 B( z) T- E  i  k2 ]7 U        .leds = da850_evm_tl_leds,
: T; \5 Q4 V2 p' w' b4 |        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
1 X6 k) B- c2 u: _- y, v7 ^% v& J8 |};
. t5 J3 F5 J! [$ v. J/ Z5 M/ d( A, [& ?2 m
static void led_dev_release(struct device *dev)
+ ^% b/ M, |& N2 [{0 S9 d9 T7 M+ A( V# g: H
};
) P" ^1 M8 @2 @1 Z; _
: K. N: e- |8 I; ^static struct platform_device da850_evm_tl_leds_device = {
1 Q  {! n; M* Q& {8 M! R# F        .name                = "leds-gpio",
7 z9 B) A5 T  S9 G' Z/ S- E  S        .id                = 1,* ]. R. O" D  u5 I* z" G9 A
        .dev = {
$ L5 w. _; n' `8 n" v8 ^: M3 j) O                .platform_data = &da850_evm_tl_leds_pdata,
$ g, O6 W& W1 }. Y6 d# R" J3 u$ G                .release = led_dev_release,
0 a$ [& X) i4 N+ s        }$ {' ?+ s9 {# R* k7 q' H
};
7 r- U6 I" P% C5 y4 t/ f5 Q2 \) t( \; P  m' ?9 O* j8 o; f; g! `3 D0 I
static int __init led_platform_init(void), ?; c. e/ A- y
{
. ?: h8 e3 W. ^4 n3 }# e  j% H0 w/ @0 A        int ret;
- }4 y- ]7 g; n. d& w: j4 f% V#if 0
/ S, r, K9 ~+ }: T; {3 a9 P        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);9 z; L, ?& k3 J) s( t  {# q
        if (ret)
5 t& f* R- U5 Y% x" D8 Q                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
" M2 e3 E6 Y; a0 S* D                                "%d\n", ret);
5 f% h3 ^7 U) h8 c8 n8 c& B3 y#endif
8 C1 I. f' h1 X; d. M        ret = platform_device_register(&da850_evm_tl_leds_device);
* T7 c5 V/ L' @& O4 F) b/ N        if (ret)# `' n  W3 K# a4 y
                pr_warning("Could not register som GPIO expander LEDS");4 E: M2 o' v$ G/ G8 d7 ]
        else
9 j7 \/ o0 ]  ?" w2 W8 l- P1 O$ V7 T4 {& L                printk(KERN_INFO "LED register sucessful!\n");1 D4 T: x/ U- i: n

7 J) o* }8 ~1 C2 |9 @% [8 J' E        return ret;1 }* J  o& y1 o$ W: L, g
}& d( Y. x/ [' Y- L+ _* }. F
' |( C& o8 l% d) N
static void __exit led_platform_exit(void)  m  c3 e; o/ H2 k) M* ^! e
{
  Z! j7 p* h  r$ j3 B# }( \        platform_device_unregister(&da850_evm_tl_leds_device);
& z0 a7 U' L' H
- C2 H+ v9 U- y; s  ~9 G) Z2 y6 u        printk(KERN_INFO "LED unregister!\n");- a9 \& E) `3 B: ~% ~
}
/ I5 h6 w2 z% U0 G6 Z( @5 [
, D3 V- g) R( K6 N9 X- Q( vmodule_init(led_platform_init);
4 f( b  ?6 g+ x' Emodule_exit(led_platform_exit);
1 D; h- O# q* K1 x7 h# N+ U' Q( l1 V6 P) \; H# U
MODULE_DESCRIPTION("Led platform driver");
1 o9 A2 Q; T. d) ~. `MODULE_AUTHOR("Tronlong");
7 d% X" U/ `6 @/ sMODULE_LICENSE("GPL");' H' b( g% U7 m" U3 M! J2 `

( @; {" I& w6 j2 [/ I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 22:49 , Processed in 0.040397 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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