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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
: k, v. c/ l" @& W4 D& M: R#include <linux/init.h>2 x' W' N" @* M9 a9 s. V5 Q2 ?6 \
#include <linux/module.h>
, S' [- ?1 ~* X0 g4 @3 s) b3 p#include <linux/kernel.h>0 F7 W6 a. }2 `3 z9 V
#include <linux/types.h>: ^) P, g' ^1 f) Q! r
#include <linux/gpio.h>
% s# I2 U& B% |$ {( s6 P#include <linux/leds.h>
$ q. J3 h. b- j2 z; I, m#include <linux/platform_device.h>4 o/ N$ W! x7 j( i! U. }

1 k0 S8 K  d0 R; f' W#include <asm/mach-types.h>) h0 `1 [6 u. k0 L# b# H# e) N
#include <asm/mach/arch.h>
& K) S+ O# c* }#include <mach/da8xx.h>+ b5 e' D; _$ P& x
#include <mach/mux.h>
8 G3 G, F/ z. T# x5 ^! O
2 D2 l, e7 U3 o1 q6 a' A#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)+ j$ j, j, \+ K, U  w( @4 `
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
! e% ^# o6 t2 R$ X5 j7 ]( K& G#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
8 U1 B4 u  s* c: q2 d#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 F9 b- I; V* V9 _: G2 U
! |5 V# B7 L& `# q
/* assign the tl som board LED-GPIOs*/
* |; Z+ K5 ^! Y2 b" Sstatic const short da850_evm_tl_user_led_pins[] = {
) {5 v. [) \; p: [        /* These pins are definition at <mach/mux.h> file */" u! ?  u5 i/ X
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
, p  y$ _  W6 D+ Y8 B' o        -1
1 z1 e0 F; |$ V/ G};5 }1 m! p5 C" I2 |8 K" K8 U

# x) K0 j; ?0 o; E# D: P" }static struct gpio_led da850_evm_tl_leds[] = {! z9 v0 j8 T3 r6 D/ _3 t
        {$ y6 I7 n1 O  W% L; b% L* k. W0 z, W2 `7 u
                .active_low = 0,: @# A4 X6 f$ w+ k
                .gpio = DA850_USER_LED0,( q8 j6 s; `5 O! H
                .name = "user_led0",
( F9 J) {5 A* W( s+ U+ s( P2 S                .default_trigger = "default-on",
" `7 z/ U2 P7 q# t0 u( L5 c/ M        },
0 }& M; W8 J2 f3 L, j7 D        {
& R6 ?( I( t  H. z2 u4 [                .active_low = 0,
4 H1 }; |5 _4 h$ l                .gpio = DA850_USER_LED1,
% H, t7 f4 o/ u. u3 d$ Y8 @$ ]                .name = "user_led1",# U: b  S9 \5 s% L! j" ]1 `3 d
                .default_trigger = "default-on",
) h$ R% L/ p0 K% V        },
" |. ^( y9 k; ^        {
1 `. {/ p: w8 x. e4 {4 Q7 Q                .active_low = 0,
# T9 f% U6 X# s- M) q1 K  `5 U7 K                .gpio = DA850_USER_LED2,
$ @  @* F% w7 ?2 C( p" Z( s                .name = "user_led2",
% n2 S7 K1 ^* X- [7 F* j                .default_trigger = "default-on",
0 L0 r6 u8 E+ g2 D: J        },; \: e7 k) `! P7 m( |
        {, Y( }- Q5 `" B
                .active_low = 0,4 e, I4 C5 P: |  h7 }# `: t( J
                .gpio = DA850_USER_LED3,
  C& Y. q4 m" o# `; P& C$ N                .name = "user_led3",
& M0 w. R$ p; N1 N1 F+ q  d% t) J                .default_trigger = "default-on",
' d" M: R; \) h' e* D        },9 y7 w& {; A: E
};
& F$ o1 A8 j" E8 w. W# R( A* @2 r0 F# d# i4 J: q1 X: j) W* [
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
2 p' l; O" V/ J0 m6 I# I2 u& Y+ |  z1 N        .leds = da850_evm_tl_leds,
& K! u: d' {; C; \        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
8 i/ l" \8 s( |( S( S; ^3 X};
; ]! h: m6 q& p! _% H# x9 P3 x6 t- Y+ w; x4 H, |( f9 E
static void led_dev_release(struct device *dev)5 x& H/ M5 k- Z, w0 Z6 M
{4 D! M8 k8 J) k9 \/ y
};6 ^9 _; o- Z. ^

& C$ X1 R$ k( l& j  t: x" ustatic struct platform_device da850_evm_tl_leds_device = {
' F: Q% }  v* C8 h1 Y        .name                = "leds-gpio",
; U; H- U- a4 {+ d0 _' ~, L( g2 S        .id                = 1,
! Y2 m3 O' |3 i2 J        .dev = {
& G- c& v+ a+ ^- g                .platform_data = &da850_evm_tl_leds_pdata,: a  Y8 u1 J7 P- Y& s& `) h7 v
                .release = led_dev_release,7 ]" h# F8 I$ R( ?0 X; I5 B
        }
( E7 B1 t; K* X3 Y/ k3 ]2 S/ a};
& E$ F9 d5 L6 Z3 s/ }- y
0 L5 t. H* E* l6 S! }static int __init led_platform_init(void)9 z! a5 b' N! I' J* t- {' J1 a- F
{' k* }: w6 a4 E* J( k9 N
        int ret;
7 t6 `" K- q( P4 G. b* {9 ]: O#if 0- L  P+ N4 C- A6 u" V: V
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
. a2 {! ]3 u$ f( F# M& l        if (ret). k+ z+ `) ]) I4 N- N4 e
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
/ T5 I9 z# b- g* }                                "%d\n", ret);/ |; B& j4 Z: i8 a
#endif
8 Z5 ~8 Q5 H% V- Y: U+ {: L        ret = platform_device_register(&da850_evm_tl_leds_device);
/ {  b0 K( B5 Z/ \+ X+ p        if (ret)0 s' h; d- J$ w8 I* ?
                pr_warning("Could not register som GPIO expander LEDS");
) r1 o- p' O, @+ V8 c2 U        else
( ]+ \+ |. J4 d  i, }' [7 w) Q                printk(KERN_INFO "LED register sucessful!\n");
2 C, n7 i2 a! X; h7 J, d3 o0 S7 p( X8 C9 m8 v7 W* v# K: L) p( O% A
        return ret;" r7 e% P" s0 L6 n/ k
}
: o2 N3 Q6 J! y& z) u# I) O* M' g+ R, Z
static void __exit led_platform_exit(void)% e2 A! }* P1 p& s0 H& ]
{
* T, h, F$ v. l. k        platform_device_unregister(&da850_evm_tl_leds_device);
: c1 T3 t5 l* k2 F1 F+ R& r* J. f
. o- d3 m- c/ u, L7 n3 G        printk(KERN_INFO "LED unregister!\n");7 t. H& z! |( |6 \9 v
}
/ q- J3 i2 [. l9 _  D: I
, ^, w; X3 [& t& [module_init(led_platform_init);8 p2 l8 a1 F% S) C; c
module_exit(led_platform_exit);7 c, Q0 o4 ~1 U# O$ s9 H+ `% e
! V# M4 p& O5 m" K- u: Y
MODULE_DESCRIPTION("Led platform driver");
# V" E# w: M: m1 `, QMODULE_AUTHOR("Tronlong");6 m) X0 a# J  ]& X
MODULE_LICENSE("GPL");2 o4 \9 f8 N* s0 q  R

2 g  H; V0 H  E, ^5 i% H$ k7 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-21 07:52 , Processed in 0.038685 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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