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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。: g& ~0 D  f/ o2 `) b: ]& k/ _3 [% P
#include <linux/init.h>
% v- P# s; V9 c, z/ }4 Y1 `8 g# |2 ]: _#include <linux/module.h>2 e0 K6 q$ h4 Z
#include <linux/kernel.h>
" r. _; u1 _# M! F4 Y#include <linux/types.h>% b* D$ S6 r& N8 F, m, Y
#include <linux/gpio.h>
; p. j( F* P' Z1 Z' _6 p1 b2 k#include <linux/leds.h>
2 I6 x0 X: [6 j. q& L: T#include <linux/platform_device.h>$ \# z/ T5 i! h- p
% X0 f" ~, Q  x, O$ M$ n0 W/ b5 g& J5 C
#include <asm/mach-types.h>
5 l$ q, J  l7 c& Z$ p* N$ n+ f$ E#include <asm/mach/arch.h>+ Z& s, ~1 ^, C2 k2 u5 C
#include <mach/da8xx.h>0 f" B7 [' v8 U# o+ L" H3 G: B9 S
#include <mach/mux.h>
- e) |  w; i+ J& S: ?1 q
$ W1 _, m. F! l  f" V7 s& r#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)9 O0 M1 I  M' r3 [* m! R5 Y2 G
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)4 @( x1 W- \  e9 e: i2 d! K0 {
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)/ y! {9 n8 e% d. Z, U7 [
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)- a$ S) Y8 a: y7 f* _* }, k
# R  f! I& k2 r+ p7 `
/* assign the tl som board LED-GPIOs*/) E) T- y: u4 J/ q5 i: I7 a
static const short da850_evm_tl_user_led_pins[] = {& o, N+ Z& m! @' A
        /* These pins are definition at <mach/mux.h> file */
8 |& F% X7 f( I/ r8 I        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,& N2 S8 n1 Y; Z+ L$ c! U
        -1
( c1 v) k8 g1 I& |};
  B7 r9 c4 L7 z) X/ @5 u0 c3 @/ A! Y7 ^6 j
static struct gpio_led da850_evm_tl_leds[] = {
) F- O* O0 T/ o  ?6 z, S        {
4 _; ]3 r9 Z- _  d                .active_low = 0,
( D! k( D! n6 n& t                .gpio = DA850_USER_LED0,) Q0 y  h1 u, i0 s
                .name = "user_led0",
5 Q9 b1 i( j2 C' a: q$ C: j                .default_trigger = "default-on",
( U- \+ R& {; J9 \" C        },
, d4 o7 i  r3 N        {! F% l: V7 }9 A+ d" M! A! J
                .active_low = 0,
  }; w% O1 T" P* s' L6 E: \                .gpio = DA850_USER_LED1,6 v" ^. P) U1 n# ]/ T: m
                .name = "user_led1",
' S7 x1 a3 O" T+ m4 n                .default_trigger = "default-on",
( j# d) }7 Y2 X* S9 I/ Q        },/ }" J! l, R( G) r4 v( v9 l( G! w
        {
. v" ^! p) M6 E: v, r' b8 q                .active_low = 0,
: y) D; f5 m$ }5 F  o                .gpio = DA850_USER_LED2,  r3 U2 x8 a& z% N4 p; m. R5 T; \
                .name = "user_led2",$ o+ H: n4 ^( {, g) U: T: L
                .default_trigger = "default-on",
# S6 u# G2 Y1 p' @! w) D1 ]& b2 P        },
+ B# I# G/ u& b3 ~3 m& s. i! {        {
  i- ^1 ?- s; k! J, N6 {                .active_low = 0,
4 Z  v  u8 f" w  z# M                .gpio = DA850_USER_LED3,9 }& _8 j4 w. a; L- b* H
                .name = "user_led3",
6 h& M* d% V" l                .default_trigger = "default-on",
# z: ?' K: V% T4 T0 W. L8 V        },8 M3 T1 [$ w# b) J( H* e
};
: m( e: n2 v" n/ h3 F; _" p3 M& g6 s; q
+ O/ D* f- X5 D! m* y* Estatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
* D: |3 t$ B, Z+ j: S        .leds = da850_evm_tl_leds,
% B0 _5 ~0 \% i1 e. h; F% {- M) Q        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),$ W3 `4 r* i6 p! p
};! }& ^4 Y. ]" z7 U
+ p+ c% b  k$ ^5 \0 O8 P+ n7 m% _
static void led_dev_release(struct device *dev)9 a; I! d, d5 p6 ]' i4 P
{
! [) p. ~) C3 ~' H0 H0 h  ]& m" N};
/ Z% ^, P6 f8 v7 A0 j6 d2 ]% X4 Y7 I1 b" z* w# w1 A
static struct platform_device da850_evm_tl_leds_device = {
" @' c7 D# h/ I        .name                = "leds-gpio",
( F& Q: l8 {# G' q. \$ H        .id                = 1,' w# A4 u( T7 w9 F
        .dev = {3 b. K5 R( g4 H% k
                .platform_data = &da850_evm_tl_leds_pdata,
7 ]2 y9 n) q+ G5 |( r                .release = led_dev_release,
% U/ E8 ^, x8 X7 M5 z2 |+ N        }% Q0 h$ U" f* `' @2 g2 S+ ?) C
};  H3 @* B- q* x
# v. x! [, ~* a; l# `* l
static int __init led_platform_init(void)- p. Z/ X* W' a
{+ {, {+ b+ f; n4 w
        int ret;
% F$ z9 h7 U% O+ N' X% c/ ~#if 0
7 V2 D6 G, H0 U1 U4 v- ]0 y        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
+ g% A+ y, j8 B+ P        if (ret)
5 }$ C( b; x( _* F                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"1 V: n: J. K9 q& P0 y$ ]% Y) p
                                "%d\n", ret);/ v" O# p( `0 z; Z
#endif
/ G1 D9 C! G, n% u. j' `        ret = platform_device_register(&da850_evm_tl_leds_device);
' ~' t( W. n$ |% q        if (ret)
; m; p0 X7 v% h                pr_warning("Could not register som GPIO expander LEDS");/ w. E4 f% W  O6 b" P# |
        else4 U2 V% `+ t+ b6 W+ U0 y* i/ O4 X
                printk(KERN_INFO "LED register sucessful!\n");
; P% M* s: D/ r1 `. Y+ G! Z4 h: S5 O# Q% y
        return ret;. J+ {) v2 J# T6 D
}& T2 r! C1 O1 N8 a3 F1 e" G

# X  ^3 z* G: C! Y- q; Fstatic void __exit led_platform_exit(void), t  f& o! ]% L+ ~" b( f
{
$ p, G; W" J5 S: n( a        platform_device_unregister(&da850_evm_tl_leds_device);
4 l9 b8 T) \* p
- {5 @0 E6 k' `! w9 F, H        printk(KERN_INFO "LED unregister!\n");
3 b- F( O% o# _1 K% |! W( G}" [# e% |; R( M" `
( A: o# w5 Q' p' i, e+ M
module_init(led_platform_init);
" W0 c8 _; d! I! {: }$ h/ O9 D& x2 Jmodule_exit(led_platform_exit);
8 |; p; ^* O( e. ~! C: a( t, ]7 F) r. J4 w" L2 R
MODULE_DESCRIPTION("Led platform driver");
3 h: t& {6 H1 w- P1 v" D/ @7 JMODULE_AUTHOR("Tronlong");
9 x# e" c6 D& ?$ j  XMODULE_LICENSE("GPL");
/ d  {) u) ^5 K. ^9 a1 Z4 T" Y4 o: a. w; O  K) B- f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 15:39 , Processed in 0.041608 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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