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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。& I4 k7 E8 M% Q/ C
#include <linux/init.h>* n+ b5 l/ ?! e2 Y
#include <linux/module.h>9 T+ i9 O5 L& L' ?8 Y/ L1 N: {
#include <linux/kernel.h>1 i9 A/ a4 N% A6 N: p- @' c
#include <linux/types.h>
8 v& z8 F6 z3 T2 J* a& {+ p#include <linux/gpio.h>( z$ t6 u# F7 p! z8 W% _  j) t* p
#include <linux/leds.h>! w' f/ k# i7 A" }  M0 P
#include <linux/platform_device.h>
0 K1 k" T5 @, Z0 [8 r. z0 E7 w0 w" N0 ]; ], {4 V
#include <asm/mach-types.h>
4 M" @4 |5 \: F- t( K#include <asm/mach/arch.h>+ v# J" X( h2 B7 l- o4 T% T) h
#include <mach/da8xx.h>7 v- w; D. h9 _$ U: A
#include <mach/mux.h>( X# K# s3 w& v+ F' E8 T

! L/ J, a5 t( j#define DA850_USER_LED0        GPIO_TO_PIN(0, 0): l% {4 i& L; u; i6 E; U$ J8 x
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
' u; J) y/ r3 e3 x0 D1 l2 A#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)7 A  F5 \2 L  o8 S4 [
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)$ C- Y8 E6 a2 d8 W0 c# c/ v( ~2 u6 B* H
, B1 z1 C# [# t2 k" Z( c% i: v4 _
/* assign the tl som board LED-GPIOs*/- `3 z) F: s* }( I1 S# j) c0 f
static const short da850_evm_tl_user_led_pins[] = {9 r5 m! S1 E: ]5 n6 j
        /* These pins are definition at <mach/mux.h> file */2 S# l. H; o; A) Z
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
: g9 `$ X: g( i+ S" {5 n        -1/ g' u2 r0 Z9 u- K; E6 ^5 O2 j$ y; ^
};
+ o6 i1 D; I5 @3 u: Q
  B% s* w0 E; A0 k' Lstatic struct gpio_led da850_evm_tl_leds[] = {8 F$ ^9 o* T' Y
        {2 \7 e4 S4 ?( l- a
                .active_low = 0,
* a" x% Q# R6 b                .gpio = DA850_USER_LED0,2 v; u( k9 f7 d
                .name = "user_led0",8 S, Q7 O# e! v' R& x  Z# Y
                .default_trigger = "default-on",
& q/ `* r$ R1 {  f! V        },% y3 p7 r  o, o; N  `, N
        {1 c. c# @+ v7 }* Y
                .active_low = 0,9 n8 R, R0 u  c1 z
                .gpio = DA850_USER_LED1,. T6 M# L' K" y  R$ N6 r/ r: W% L
                .name = "user_led1",
" l+ t) {" ~3 p: W, C# E                .default_trigger = "default-on",( [6 m- ]: C+ a$ H5 T1 k, b
        },( F' P8 N4 l5 o5 K7 q
        {
: a7 m: v5 y7 m; N/ q8 v: \+ V                .active_low = 0,
: t; ?' l/ g* P9 @% b2 o- }4 L( n2 \                .gpio = DA850_USER_LED2,/ [2 z. t) z9 r* p0 T4 Z. j
                .name = "user_led2",% j; f- G' {5 I
                .default_trigger = "default-on",
$ d& Z# B& j+ \8 I& u0 R# f/ n        },8 L( k5 r0 X& `6 ?
        {
' X+ U: h1 X6 s( W/ A                .active_low = 0,# v" ]" ]% B9 D& \$ D/ v* F
                .gpio = DA850_USER_LED3,  x# g3 O/ U9 a0 u! O# R0 b
                .name = "user_led3",/ |$ H" _$ m$ I# K+ P
                .default_trigger = "default-on",
% N  [+ P* \& \: P9 E7 ~        },
2 j$ K7 Q, L& F5 ?6 d- I};! r1 h+ \  Y# _* H+ ?# ]
- K# Q! A, g/ z0 Z0 m% a1 J, I
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
* t) |" C1 C* @7 @. i' f        .leds = da850_evm_tl_leds,, H7 g* P) L& c. V
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
; a) I5 t7 z2 w1 H};
) z1 O; c3 x+ z* F8 |  g$ D4 c
  e! W" E; c- q% d! Q; @! tstatic void led_dev_release(struct device *dev)
0 c. t7 \. R8 R4 E5 _5 K$ N2 j. s) ^$ f{
- M9 q* |# ^9 E& w8 n' n5 M};( T5 s$ A! ], X
" O+ t# _5 N2 W
static struct platform_device da850_evm_tl_leds_device = {5 R/ v/ ~: g% M: I& Y" n+ f
        .name                = "leds-gpio",
/ g2 z7 A. x3 d. m        .id                = 1,
+ ~0 E* t5 y6 i) W9 q1 _$ W        .dev = {
- q4 f/ v7 l* w0 G( N                .platform_data = &da850_evm_tl_leds_pdata,% s* s" a6 [9 k2 {. |( N1 m6 n2 @6 Y! n7 c
                .release = led_dev_release,8 M: p6 |: L0 Q
        }/ n: G8 H# x! d7 [4 b; L
};# e% N: I5 w6 u
3 m" q* M2 j+ j( n
static int __init led_platform_init(void)7 P8 Y9 h! Q- ~8 U& {7 m$ f
{! t: _7 ]+ H, Z& |7 p& Z! o4 H; T4 g
        int ret;
6 Y, t* U- v1 R4 o# z/ c#if 05 @9 m" Z2 L  |% s
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
/ B/ s- M, \/ ]) v        if (ret)
2 ]( ~6 h: H1 H" l# g                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
; d9 t1 k- f, F; l- e7 d                                "%d\n", ret);# g2 n3 J. C8 r! K. P
#endif" S; q! ^* u7 P  Q6 O
        ret = platform_device_register(&da850_evm_tl_leds_device);; o, U$ t1 o0 }* L+ r- H
        if (ret)
) y( X5 M/ C% _* U+ U                pr_warning("Could not register som GPIO expander LEDS");8 u/ x+ T% @  J5 V* L1 `; X
        else. O/ S7 v, K+ o& y* T$ m+ Y; g
                printk(KERN_INFO "LED register sucessful!\n");/ E5 W( ?7 i, C0 ?
+ G$ e: I, t0 W% w+ u
        return ret;
9 k- I: o" l& ?9 K0 _}
/ ^6 F; W0 d9 ]4 e
0 H9 H, I7 K; N' w- M! sstatic void __exit led_platform_exit(void)+ n, x/ I, \# H% E
{6 x! x7 f  Q* p- W
        platform_device_unregister(&da850_evm_tl_leds_device);, k& t! O  `1 [. G+ E- k/ a

( ^3 u# E) M7 n; `        printk(KERN_INFO "LED unregister!\n");- x$ E7 H8 V1 n$ B# [# a1 E6 R
}
1 E, F7 s- x. e- H6 W/ W2 r& x% k% P2 b& z6 t$ O: q: j
module_init(led_platform_init);
" b7 p: o" F. J& m$ R& ?& Lmodule_exit(led_platform_exit);
4 h+ Q$ H" R4 R- H
5 D3 C% W/ G7 D1 x1 jMODULE_DESCRIPTION("Led platform driver");; C  }' F6 J. t- E  L
MODULE_AUTHOR("Tronlong");) d* d0 y& m& F/ y* I# g
MODULE_LICENSE("GPL");
) f& M3 k6 q: M* d. E; n; _  @! e; Y! t* o4 E. c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 19:40 , Processed in 0.038684 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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