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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
% i- _9 w. P1 l& N, I7 y* x' Q; U#include <linux/init.h>- B, q+ C* B2 K+ z& l
#include <linux/module.h>
4 w: ]' m1 H; l8 }  q6 {#include <linux/kernel.h>0 b0 V* [. G# p% l1 x  \, r
#include <linux/types.h>
4 R: n' e- ]2 p+ B( M#include <linux/gpio.h>
8 T+ {7 w3 v  W0 G% q' i7 U#include <linux/leds.h>( @9 R7 {! t6 s+ p* Q4 v& R
#include <linux/platform_device.h>
$ T, \0 m0 w6 A; G6 Z
* t" D' ^+ p  B, o2 @  a#include <asm/mach-types.h>/ K5 [( g! ^0 \, z) p; m# @
#include <asm/mach/arch.h>. m- R/ w0 s4 P, y2 G
#include <mach/da8xx.h>
; C6 w2 k* A7 B6 T7 P( ?+ P#include <mach/mux.h>5 D) t( I2 u0 @
" j( a( ^) d1 S/ \, N) v
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
0 J3 b# v* a9 a# r% R9 l7 ~#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
. _/ d8 f8 S" C#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)2 R" E8 w( q2 y4 Q/ S7 c
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2): o  S" e# n. o4 X3 E: i. ]
, F1 \+ P* ^4 b( d$ C9 I
/* assign the tl som board LED-GPIOs*/, \- D( C6 O2 O& X! L/ [! S
static const short da850_evm_tl_user_led_pins[] = {3 l/ d# }$ e+ q' o; R
        /* These pins are definition at <mach/mux.h> file */4 h# d) I, D* @. X2 H0 _! L+ G+ s
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
7 [( o. H  Y, q5 M; }7 J( [6 p* k' D9 F        -1# I! O5 \$ Y8 U% H8 |
};  ^5 E* M2 C1 n" |
* B3 A/ n, K# f6 l6 N4 _9 W
static struct gpio_led da850_evm_tl_leds[] = {
" Z- C0 j; X  q& t        {2 s7 A. e0 j- C( I* R% K. y
                .active_low = 0,) G1 c6 q; H0 {8 a/ [; `1 ?- b' ]
                .gpio = DA850_USER_LED0,
% y9 ~# [/ N/ u                .name = "user_led0",
2 ?" `. J9 m3 p' N. M' y                .default_trigger = "default-on",9 \" Z0 @0 r7 ]. ]' [
        },
0 s/ a2 E% X; R- A+ B( y        {
" q8 ^( u1 j" \' h0 d( t                .active_low = 0,
2 N7 P7 l+ H& h$ \+ S& T! D                .gpio = DA850_USER_LED1,: i# B7 c$ J0 `
                .name = "user_led1",
3 y; H& D* ]& ]1 t* c1 X4 \                .default_trigger = "default-on",
. v& `# b' i# a+ s% b! a+ ?        },9 i1 Q. A* A# N( h4 s: Y3 l
        {: w0 c6 V8 J/ Z; K" q
                .active_low = 0,
  L3 }3 D* ~0 t+ A9 n                .gpio = DA850_USER_LED2,
/ R0 n/ i, s: z9 b/ Y1 [                .name = "user_led2",
$ v- E# N* Y% h                .default_trigger = "default-on",
: w, D% o1 y8 J7 i/ ?        },1 Z+ f4 g% w) K: {" o* h6 V
        {2 k+ [9 n, a& O5 r
                .active_low = 0,* S! R9 }% y! ^$ ~- g2 _+ y: O
                .gpio = DA850_USER_LED3,
  ?; U% X+ k1 E6 T* Y                .name = "user_led3",
. ~' S5 V, [6 j+ O                .default_trigger = "default-on",
  J6 Y6 N6 A& ~* |; I" w/ c0 w        },. M" M% W3 a" L! u' t+ u, M
};
8 \$ v* _1 F+ Q, j
9 B6 u6 T8 E4 R# s6 Cstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {/ C' j1 k0 s! i# u( N- _
        .leds = da850_evm_tl_leds,% q2 ~/ F3 n1 m5 ]
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
: B5 M! u8 W  g% s};2 ^( K. M( G  A9 M
5 q' G( x- f+ C  ?# G
static void led_dev_release(struct device *dev)
' c6 V1 n5 n' p3 E3 U1 B3 ^{
% `9 m8 w% E9 i' C! M};
$ z/ y6 r. T3 Z* b% t1 V/ i+ P0 h  d5 N6 u" A- Y( h) ?3 E2 H: x
static struct platform_device da850_evm_tl_leds_device = {
3 S' `6 L) n% a7 d$ {  b        .name                = "leds-gpio",
! H# l" l  [4 q1 q8 X, H* \) z        .id                = 1,4 l9 g# T% i8 |3 J4 r8 c
        .dev = {
; a/ S, W5 D. f: v                .platform_data = &da850_evm_tl_leds_pdata,
! b! @7 C: k1 {# T" q                .release = led_dev_release,9 b& C  p1 i  i/ u8 {5 W
        }5 Y: c" T8 B5 B: i3 c) x
};8 n9 I4 \4 N9 B: D. Z* _4 z
3 G- c- H9 M* @' @
static int __init led_platform_init(void)
& `* c' [7 h3 P- J, C( U{0 ~. q& ^( Q2 U8 n' w- B
        int ret;
8 O' T, r8 U; V/ }#if 0
2 J# L7 _( C& `( {1 M( A# s        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);% u" e$ H' y- D+ g  X6 }7 d4 s
        if (ret)' l" Q  }, S  A) n3 y7 D2 B! P! N
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"& x9 a% r- W& F* B/ G4 \
                                "%d\n", ret);
  F8 i8 Q8 q' M. A3 w! Q#endif
: p) Q9 Q# {: A/ o/ T        ret = platform_device_register(&da850_evm_tl_leds_device);
* m# t, S) e! M, I7 C2 ^0 z3 Q        if (ret)5 x. q9 X; d( R
                pr_warning("Could not register som GPIO expander LEDS");
# L4 H) s6 D3 j0 K        else
0 P# b9 R6 e8 `/ O( f1 b" T/ U                printk(KERN_INFO "LED register sucessful!\n");
8 W4 k, k4 {- F' e6 |* C. I0 \9 O0 K  c0 j
        return ret;
! _6 t$ @' l3 w- s. T% z" z}
6 M" ]( g: O" ~% E. F9 s" V6 b9 U0 ^: W- L
static void __exit led_platform_exit(void)
9 P) P4 d% K3 ~9 l1 }/ j{
2 s3 q9 l+ }) g7 g8 u3 Q        platform_device_unregister(&da850_evm_tl_leds_device);6 {" q( V) j0 q+ E
( m8 Q' Z* Z2 U1 F4 L
        printk(KERN_INFO "LED unregister!\n");: L0 F/ _% _& c) R; M
}2 l2 S1 U: M, K( c. e
3 p9 ?* e" @$ |1 s8 W; V, q+ a
module_init(led_platform_init);
9 X% Q* @$ L9 T$ A2 u! omodule_exit(led_platform_exit);  g3 z% W+ O& J* H
2 O: h% T0 @  X
MODULE_DESCRIPTION("Led platform driver");* m3 \( G: o, H+ L6 c
MODULE_AUTHOR("Tronlong");
1 z- i5 E" G9 S' M5 HMODULE_LICENSE("GPL");4 p) x3 x7 q% w* P2 Z; b

# a  g! ~0 U2 }8 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 09:19 , Processed in 0.038532 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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