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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。0 `/ e7 u8 ]3 d' i% d6 f, @! e
#include <linux/init.h>
: ?8 h4 ^$ h5 |5 g. B# c/ V9 c4 k#include <linux/module.h>
! }  c* V" @! ?# k9 d#include <linux/kernel.h>
7 i1 s, Z4 r+ ^9 N! M8 n  D#include <linux/types.h>
: u6 m- u: w) \: K/ J7 ~#include <linux/gpio.h>& b9 ]3 v, V+ F6 i; Z' N
#include <linux/leds.h>3 O( Q0 P0 U  s" {# T! Q
#include <linux/platform_device.h>: J0 d( v: g4 M7 ]; K' Y

; R; H4 T/ t6 c  u! h1 [, w#include <asm/mach-types.h>. B* O: o4 f! v0 [9 Z) z: Z4 X
#include <asm/mach/arch.h>
0 i7 O* z2 U) l, p  o#include <mach/da8xx.h>! ~: g& i/ ]/ {. q" X4 B- F1 R
#include <mach/mux.h>
1 D0 R' s$ y9 V1 b) |' P- l' T/ j" E- V  c
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
, D6 @4 i& ^5 q: ~#define DA850_USER_LED1        GPIO_TO_PIN(0, 5): [8 i, T  K3 k/ a0 `/ e) I
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
% a! a2 _: W8 @' H, }4 }4 F#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)6 w9 R+ z# u' U( Q! D; n
3 `6 E2 U$ c# C+ u% [5 n( ?# ~# z' U
/* assign the tl som board LED-GPIOs*/
8 Y! ]! L  c3 |  H5 T: o8 h2 pstatic const short da850_evm_tl_user_led_pins[] = {
) s5 @$ i1 h$ Q+ i- W: Y        /* These pins are definition at <mach/mux.h> file */3 X( P( L& y% e  J( n* d1 A8 i+ W
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,8 @* D: S1 p# G' G0 @: e0 l* n3 O
        -1
% Z  i0 Q3 S: i) B8 l};% I: r( E; {4 T

5 v4 l+ v* K6 D2 Kstatic struct gpio_led da850_evm_tl_leds[] = {8 e# |6 U3 a( X* \
        {' o+ s/ d0 g" U; c, l0 P9 i8 `' n- R8 q: }
                .active_low = 0,9 k2 e. J9 r! O( G! }
                .gpio = DA850_USER_LED0,
% R% u$ v  v$ |! |$ o2 z8 c                .name = "user_led0",. d7 o) Q2 d! }( D3 y1 k, ~
                .default_trigger = "default-on",
" U. o* _  N* L( F5 O( q        },
3 n) g. u# P, i        {
! I8 q' u2 h# Y( Z7 l- F                .active_low = 0,) ]& k& \' m7 ~
                .gpio = DA850_USER_LED1,
/ @% X0 E; ~$ ]+ g! A' @, K! N9 q                .name = "user_led1",0 D' r$ r8 S; a0 _3 T1 C
                .default_trigger = "default-on",1 N8 F( y. U2 y$ m3 s4 V
        },
# y* Q) f, @5 k  Y/ ~        {
6 N: _" I" J' ]% d+ i3 Q9 l; A2 l                .active_low = 0,
5 Q1 V; y: X. I                .gpio = DA850_USER_LED2,5 e" M+ y7 T1 V
                .name = "user_led2",
* i" c1 b& M0 Y3 X$ q! c  H                .default_trigger = "default-on",% T/ k. G* g9 F4 x, L# ]% J
        },
5 ^3 p8 W' W! i$ o% D1 Z, {- G/ c) e        {
6 t1 ?6 X2 z$ o* @/ H6 C4 }                .active_low = 0,) h& k! m4 W. i* }% F
                .gpio = DA850_USER_LED3,
) v2 C1 n! X6 s8 L7 i! d                .name = "user_led3",% |0 _4 ?6 }4 ]
                .default_trigger = "default-on",
0 Z. a0 y# V# x4 G; o8 J( |        },
1 c" q( D) |* @  w};% a0 J( u  K" ^& U, K# d+ |
5 F# m2 x  I4 f3 v/ ^; b" ^# Q- K
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
! L# w' h7 _# i+ ?        .leds = da850_evm_tl_leds,
" J8 X$ e) p- r5 U8 ^% l& {        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),3 Y2 j7 [3 ?, Z) k" {
};
+ R- v4 k: @8 e4 a0 U" [$ `  {$ r( s& }* N% N2 q& S9 k: V
static void led_dev_release(struct device *dev)
$ ~) U/ X' ^/ i2 z3 L# W{( Z1 P* u( M! s8 `9 @0 e' [
};3 g0 k% r: ~/ v+ j+ w0 j

& a6 }& M/ Y$ }2 r' b) t& sstatic struct platform_device da850_evm_tl_leds_device = {
6 h$ ~' [  A/ Y1 Q) a2 w# T        .name                = "leds-gpio",
! q. ?# ^; K- g2 J6 U" O; \        .id                = 1,
: `+ C& A" X2 R  |        .dev = {# f$ c$ W) w. j5 B' M0 I
                .platform_data = &da850_evm_tl_leds_pdata,2 J, f6 g$ o' M4 A2 y
                .release = led_dev_release,
; y. M$ y3 V  I5 U% r- [2 {( e" ~  e# A        }
6 A# K/ E. z2 e; g. d7 ]};
! V9 f$ R" [5 L2 b) ?7 F. z, R  j( f
) M0 B% Z3 r6 W' I" E9 Tstatic int __init led_platform_init(void)
3 U! V/ y  M9 F" k( Q{
  P3 k% R: U# A6 ]8 U* O4 M        int ret;
  T) b- Q3 y2 {; e+ F1 m1 ?#if 0
0 H, b" T4 `& U! N: h2 A        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
  v4 O8 }9 s0 N+ n9 q% f2 O        if (ret)0 X- y2 _) Z3 A% R" J& g
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"& r' h" e4 n' z" o
                                "%d\n", ret);0 h1 z+ s; N* K% n1 E7 n2 h. h
#endif
- w! O; |- T5 y; h! X        ret = platform_device_register(&da850_evm_tl_leds_device);
% d  U6 L* r+ {/ f- G        if (ret)9 {0 K- d5 B- d7 E* _
                pr_warning("Could not register som GPIO expander LEDS");, s) P. F8 v, l! L
        else
8 {) T$ _' i( ?. n( u+ P4 V( c                printk(KERN_INFO "LED register sucessful!\n");
# L# z8 `7 }  B% ?0 R% P- |
0 L% y. c. {8 D4 [        return ret;  |5 p+ p+ R6 z% g9 q$ |3 G
}6 H) b, K! |. M. h* ^" z5 ]8 W& x0 s
/ b) L. _0 Y  v/ ]
static void __exit led_platform_exit(void)
# b1 b4 A7 D( N9 y7 H{# Z3 y0 `, e( ]# K3 i  S6 q
        platform_device_unregister(&da850_evm_tl_leds_device);
, U& z  X& u( v4 w- d+ b$ H, `) G0 \9 j# ?
        printk(KERN_INFO "LED unregister!\n");
; U$ c/ U, R4 V; z& z}8 Z& S# I; F( Y: F: l* v' s  u/ V
+ b- M# Z1 r; \( u. E3 q, \4 T
module_init(led_platform_init);0 i! [$ K: ?9 ?7 T9 W
module_exit(led_platform_exit);' g: L+ h/ L6 h/ H% f8 {9 z& P

% V9 z' s! t" }* x; _; lMODULE_DESCRIPTION("Led platform driver");, B: J, P- ?- H4 E/ x# Y
MODULE_AUTHOR("Tronlong");
2 ?, ]  l1 h& s# kMODULE_LICENSE("GPL");% t  V( r) h6 ]7 ?* W
  F8 |1 M! D# R- q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-23 05:30 , Processed in 0.045235 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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