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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
4 z+ r! h: e1 y$ k2 E8 C+ c#include <linux/init.h>* @+ V$ g: \: l0 k! X/ `( ]
#include <linux/module.h>9 c5 r6 e( ^; a& R+ V# _% e  ~/ @; D
#include <linux/kernel.h>
+ j4 c0 G# r* ]& Z/ u#include <linux/types.h>8 x/ H/ f' W4 o8 y2 z
#include <linux/gpio.h>  O  v, q! C' `
#include <linux/leds.h>( e- u+ O  ~4 \! U) F. O- d' o4 D/ l
#include <linux/platform_device.h>4 E' X: o' j' Y) d
/ c* Z$ ^0 W8 c& r: u
#include <asm/mach-types.h>( R' X* \6 g2 Q! U/ v$ q; r
#include <asm/mach/arch.h>, q9 f$ V  S5 U( u! s6 q* Z+ _- J) q
#include <mach/da8xx.h># R/ C# R1 k  I( t6 n% a* n
#include <mach/mux.h>
& _; `4 f$ Q$ K5 ^
0 g4 g* H$ X+ W6 n3 v#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
/ T6 m/ V. A* {$ j7 O#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
2 |& h  G: _7 W2 r5 N$ d#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
3 D& n' R$ h5 u$ ]3 P; Z#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)& x% u/ o2 M: ]4 a( `  x3 h# [
, O* A& R) l  \
/* assign the tl som board LED-GPIOs*/# F5 s8 U) Z( M8 B& D
static const short da850_evm_tl_user_led_pins[] = {. H' C0 ~7 D# n0 ~% b3 I
        /* These pins are definition at <mach/mux.h> file */8 \/ Y! w- _- T; z
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,# L8 v4 R: O% J3 K* |
        -1
) N7 l$ P' }* e- s3 m- J};% _5 g3 q7 l' ]. h2 a/ a
3 l, Q/ \1 y0 ^) R  b1 N
static struct gpio_led da850_evm_tl_leds[] = {
& A3 P0 E; z+ T1 c+ C: D6 A        {
$ p' r' k' x$ w" g: S) I                .active_low = 0,
5 H  j& n' L" T& z3 q+ C( Z; M                .gpio = DA850_USER_LED0,1 B# `# f$ V+ }: R. z
                .name = "user_led0",$ }  c4 ]7 B. _. P( `0 m9 P
                .default_trigger = "default-on",  T& d; u6 F6 K# w
        },1 E" ~; B1 H8 h) l, j
        {
/ ]$ p# o2 F3 `7 p& q  Y& u) _6 N! Y                .active_low = 0,
4 r5 ?! F, J6 q: d9 l: |                .gpio = DA850_USER_LED1,( o. ^6 k- g2 T- J/ f; q6 [
                .name = "user_led1",
; z# {3 t- e. m- i                .default_trigger = "default-on",
( g. z" J$ T) s$ v. u1 h6 ]        },8 H# @8 F( V& T3 K1 u8 L! H
        {* \5 L  X6 Y5 H7 H3 H
                .active_low = 0,8 W# z0 {1 M$ ^) M& k7 E0 g
                .gpio = DA850_USER_LED2,- X1 w# I0 W/ h/ S! H+ z* v8 _
                .name = "user_led2",- g7 h2 g: \  j" h  x
                .default_trigger = "default-on",
$ `( L( t# m4 T" P3 i2 n9 `        },
' Y0 K" P+ v& r) d/ ^) k  t        {0 [+ F" w. b  c# Z# @) x
                .active_low = 0,, X8 Q, g2 G! Z* [3 Z! F: H6 h
                .gpio = DA850_USER_LED3," q5 l& k( G+ C8 g
                .name = "user_led3",
, F- l. v$ t* G- W" Y( _, v/ O5 B7 C                .default_trigger = "default-on",6 C! P9 }6 R3 W0 E, r
        },
  _' i) P/ a9 n7 }, V2 y. \};  d1 R8 l4 w9 G  q  Q

0 r+ ~9 a$ V# Xstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {3 x7 ^  Y- G: O7 g+ J
        .leds = da850_evm_tl_leds,
) `& U# ~2 W: Z8 J! Q        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),8 y, w+ a, H, p
};/ Z8 S4 ~- g& ^" M4 I- x

9 ~9 t! a* q* @# C/ f: Kstatic void led_dev_release(struct device *dev)
% A3 e2 F0 n5 q: r9 o! K8 f) |{$ x& E+ f4 Q" j, C0 a
};, q+ G7 a- Q& v( F  L

5 D$ {) b# B8 i$ |static struct platform_device da850_evm_tl_leds_device = {5 R" D/ H% r! [) @4 i' s; l
        .name                = "leds-gpio",3 I2 S- @6 Y. f# K' ?" i
        .id                = 1,
. X$ P5 [+ L3 P" p* |! r0 k        .dev = {9 z" M9 M$ ?# y# M
                .platform_data = &da850_evm_tl_leds_pdata,
4 R% ]: A0 a( [9 q: F2 b4 }                .release = led_dev_release,
2 K- I/ X% {: E& p" M9 b9 A        }' k' ?( A3 B. o2 {# [9 Y  {- e
};& v2 l/ j7 H2 D+ U/ g1 W

5 G. x/ g: Q; ~7 @& o" F0 ~9 ustatic int __init led_platform_init(void)2 `) `; Z% F2 a7 R
{
0 J. H8 A  l7 \" p+ W5 b* n6 o. V        int ret;+ F: n  T/ a5 F, h
#if 01 W- ~2 m0 s8 ^  l1 e
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);( E( G1 J9 g! {& ^5 b
        if (ret)0 t9 N) V5 z  r' U" W4 J
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
9 j4 o8 O' W. D                                "%d\n", ret);" E( R6 z4 j" |( n
#endif4 b' y- }) }) p
        ret = platform_device_register(&da850_evm_tl_leds_device);6 h7 ^9 _3 {. Z' `0 i( o$ A
        if (ret)8 i* v$ J) a6 i2 s4 ?
                pr_warning("Could not register som GPIO expander LEDS");7 M/ z% P  s0 b; l1 O; s2 w& j9 f
        else
# w8 O+ j4 Z: K5 g) @/ D8 Z) Y7 ]                printk(KERN_INFO "LED register sucessful!\n");
7 `$ Y3 \+ e( d4 n9 e' ^0 W4 s. A3 u8 W- t0 d4 |
        return ret;/ ~7 K% t4 j) y$ v
}
/ p. @, l4 g  e+ j5 o: n  _  k6 U3 B* ]
static void __exit led_platform_exit(void)% D3 \" d' |% a$ D. }) `
{, f! Q; t; O" S& k
        platform_device_unregister(&da850_evm_tl_leds_device);
) y) {- g$ |; w. R2 F" T6 s3 l/ U
        printk(KERN_INFO "LED unregister!\n");
- ^1 ~/ j( F. L5 j( U}* E) u) ^. b0 h& @7 X& J: F
, T5 Y! h% @5 j
module_init(led_platform_init);
( G& _3 r) X& }% A- q$ |+ Nmodule_exit(led_platform_exit);
, D2 X" u6 U1 h+ O2 }" J/ R9 j5 Q: {5 M2 Q2 Y. E8 W- k
MODULE_DESCRIPTION("Led platform driver");% H" Y8 p) m7 |- C
MODULE_AUTHOR("Tronlong");
/ Y/ M* j$ f+ H, `0 y7 A  WMODULE_LICENSE("GPL");2 h) T! C* \" k5 S/ C

5 ?$ B/ H4 N! Q+ h  J8 F' w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 13:07 , Processed in 0.040922 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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