程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
, x$ i' k$ ?  p) F( L* e- a/ ^#include <linux/init.h>* g7 N& r  [( \( f; ]4 b
#include <linux/module.h>
) |/ G& m1 f$ J( A#include <linux/kernel.h>5 w4 N, d0 X. m" p7 d" f& f
#include <linux/types.h>- q( _/ O. W0 ~2 Y4 i% R
#include <linux/gpio.h>4 b) u( ~6 a  y2 v+ _  Y
#include <linux/leds.h>' y( c& [8 H4 F! z: S) B
#include <linux/platform_device.h>
9 u8 H# y8 P3 O$ _1 `2 h9 V$ a- p$ F9 w$ p4 ]/ _; h6 M, Y6 ^
#include <asm/mach-types.h>
3 ~' C: s+ A! Z8 J#include <asm/mach/arch.h>( [) D6 |$ U- j9 w# h; G
#include <mach/da8xx.h>
( Z# O" e! c3 Z% h1 g, L; j0 V4 X! S0 O#include <mach/mux.h>
" y2 G3 A: c* Z8 {, w! [
7 b' j. B5 s7 O+ R& G% j! X#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)' X: F/ P& o5 S* C* E  k  u
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)6 @( z9 n8 d( C# A0 v5 }, q
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)  h2 d% c3 |$ X( Z. U( T
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
) D4 k9 T' L5 f" n1 P1 y
7 S, n7 Q- \/ y6 e. e; ^. a/* assign the tl som board LED-GPIOs*/
6 a7 g$ G% ?& q( C0 E0 N& [" Y0 tstatic const short da850_evm_tl_user_led_pins[] = {
5 f2 l* C- y+ }$ C" I, [; F        /* These pins are definition at <mach/mux.h> file */
% J2 }: d# h' l# d/ a* H) i3 ]0 |* ^" M        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,' W( e* @" u/ A( b
        -1
. ~9 {6 H4 v6 z2 F, h};
6 [" o9 j$ P& M, z7 c4 ~3 [# f' M1 g+ Y2 B! Z
static struct gpio_led da850_evm_tl_leds[] = {( h& g8 W( h' n& j
        {$ S  R% t6 @& b% ~
                .active_low = 0,
1 Z$ e3 B& [. f                .gpio = DA850_USER_LED0,% T+ @' I1 S) b4 [2 U
                .name = "user_led0",
- c' D# P# c" q/ C, D& M                .default_trigger = "default-on",
: |) i+ C8 i: v8 y$ c" u( ?6 V( C        },5 l, M5 i# U! }# M2 v4 s
        {
' Y+ p2 r* Q. X- B' v                .active_low = 0,
& @# G0 V* h5 W                .gpio = DA850_USER_LED1,9 o# O' R. Q9 [# f# s  t
                .name = "user_led1",$ B% X- X. j! R! \. k
                .default_trigger = "default-on",) n) Q9 {; m* c$ L. _( X1 W
        },) b, [: |4 D( Y9 @) Q) `' I
        {
) E( G1 k( E4 Z% u9 W+ S                .active_low = 0,
7 C6 y; W1 K7 l/ F                .gpio = DA850_USER_LED2,4 _4 S# D3 m, h7 O* C% ?# F
                .name = "user_led2",% I8 k% |$ J$ Z8 R( s' n/ D8 a7 L0 k
                .default_trigger = "default-on",
. }4 N! [! U8 C5 L        },
- m( `6 C! L+ @        {0 g& c) |* D, m% N5 R$ K, |
                .active_low = 0,
2 F  }- B6 L1 C% C8 Z                .gpio = DA850_USER_LED3,
- C. G4 U1 Q% I. F( V6 T) a                .name = "user_led3",
; E5 R/ Z) i1 x1 r                .default_trigger = "default-on",4 N7 H, F) i9 W, b3 {- x
        },4 P7 G! O6 Q& b
};& d" F% m3 R' x! n# ?0 E" Z0 A

# w" B* g5 O6 h2 A. kstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
. S7 T& S0 q! {: Y        .leds = da850_evm_tl_leds,8 g% L. o% ?) I# n( j
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
. o) z5 F2 K) C};9 Y# T" y( I/ G# o/ K

: Z- x7 {  r+ O! r/ x5 a7 kstatic void led_dev_release(struct device *dev)  x" p$ o7 V  O' D
{, e8 j  C2 }9 u' v2 N! v
};3 v4 E2 n  W2 j8 G1 W

- b% v( P4 w2 R6 K0 kstatic struct platform_device da850_evm_tl_leds_device = {
7 U/ Q5 z% B! y( U* L" I% b1 C        .name                = "leds-gpio",
4 z, B) P" c5 M8 J; q. w+ X        .id                = 1,
0 s  h/ \; y! F: E; \& w        .dev = {
4 d: g* d+ ?- w& N! \& [                .platform_data = &da850_evm_tl_leds_pdata,
) k* ?$ k, ?. D7 d! {" Y9 |$ I                .release = led_dev_release,
% _  h/ T$ T  }5 H        }
+ P+ b- `: F8 a/ Y7 V};9 k: a, i* a0 C: v. o$ o3 @) N0 a, i
! Z0 p7 L& |) }4 q- J/ a/ m
static int __init led_platform_init(void)2 t/ T( J2 n9 e1 i4 N
{
$ [- [1 b0 I. T3 J1 \+ n3 z1 r7 Z        int ret;
- n4 ~9 i* `8 {/ T#if 0; O9 [. M7 X9 U
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);' u. q5 D% h. ^+ x8 m
        if (ret)% x$ m* o6 \2 L) F8 @! J+ ~
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"$ a$ U; a6 ?3 W( C
                                "%d\n", ret);8 @5 B7 x5 E8 I3 P% ]! ?
#endif
3 I  ?- O& }& V$ M4 W! |/ L- N        ret = platform_device_register(&da850_evm_tl_leds_device);1 g1 I( G2 n, Q" R/ C* Q& x
        if (ret)
: V, K9 `1 C$ l% n  w" W                pr_warning("Could not register som GPIO expander LEDS");/ q: x8 `5 w" T9 r/ c- ^* ?
        else9 x! n# u8 }$ u8 ^  V- Y" c7 a
                printk(KERN_INFO "LED register sucessful!\n");
4 e7 s- J% q9 d  q: O" {" t, _' i6 M/ @, {
        return ret;
# }. ?5 o2 ^8 l2 _6 q/ K% R}$ ?6 I! n* g5 i8 a% m- y, D' [
8 p. o, W# L4 _/ _. O5 f% a
static void __exit led_platform_exit(void)
7 V6 x+ v* j: }+ h{& u& @6 ^5 _/ C7 B
        platform_device_unregister(&da850_evm_tl_leds_device);1 Z' p- e9 j4 x3 J9 \+ c! e

8 J$ Q/ x4 L/ `7 j: v% t        printk(KERN_INFO "LED unregister!\n");9 Y+ q$ l6 p0 j2 ]$ h3 Z, t  ?
}7 m+ j& p" G! H1 E; ?1 D

9 E2 n  @2 E  L' X8 X8 q) M: [module_init(led_platform_init);
! M, f; D/ X% @9 e8 O% F9 D' Ymodule_exit(led_platform_exit);
5 I  E: G0 N1 q- _2 E( L' }+ S5 i5 S; [6 u& [
MODULE_DESCRIPTION("Led platform driver");
7 f* e/ o. H( y( kMODULE_AUTHOR("Tronlong");
- T5 V+ _1 Y9 bMODULE_LICENSE("GPL");
  B3 ^5 m6 K9 C2 I& r
  ?9 {8 t# @: D0 A0 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 02:20 , Processed in 0.041001 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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