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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。) B& @& }8 s. s/ k/ f: f: r6 b
#include <linux/init.h>
4 j' y% j1 l; i* J: Z#include <linux/module.h>0 I: c1 j, `5 p# R7 g
#include <linux/kernel.h>
& Y, j. ?0 O1 }- w9 K4 ?* q1 `1 D8 e#include <linux/types.h>; v1 H2 }7 Y# Y2 {% q$ A4 Y
#include <linux/gpio.h>
8 }7 E) p# C1 u#include <linux/leds.h>! D# |" X/ {# G% v/ n- B
#include <linux/platform_device.h>
! Q2 }, ~5 S$ ]7 A6 J- j+ Y) x- g! |, v1 ]/ u5 S3 G& E: L
#include <asm/mach-types.h>
# C7 Y& Q, {2 Q0 K3 L/ T: U( M0 F#include <asm/mach/arch.h>
/ w+ O3 P' i8 y) n, b5 S#include <mach/da8xx.h>+ {' k& v& s- f3 k6 H
#include <mach/mux.h>
$ ?, ?  ^# X6 O0 S% [: w. Q
7 W" J( n- f: c5 w, {#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)( F- m8 E# D, E
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
  w# z& y, x5 P0 v9 C; M+ o#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
& c' A: ?/ i  U+ V; B#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( c  t+ J2 `; W

. z( T5 I# g1 \9 y/* assign the tl som board LED-GPIOs*/
4 A2 \2 @- v) V6 y; n6 {; H3 i" `static const short da850_evm_tl_user_led_pins[] = {2 F+ K. M6 u% M5 U
        /* These pins are definition at <mach/mux.h> file */3 ]: S/ i; r1 o9 e' i5 s: V
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
( `; z+ ~. r2 J# ?* Q0 n! R        -1
9 R: v. M8 p& h};* f5 q; x! b& M

9 w+ a, U5 ?$ |3 @8 c3 J% P8 L+ {static struct gpio_led da850_evm_tl_leds[] = {+ F5 }( ]0 B: ^& r  e6 ]
        {
* A; I7 S! g+ O8 X3 ?+ ?: l                .active_low = 0,' y( ]; h1 M3 t5 W3 U% B3 m! x
                .gpio = DA850_USER_LED0,1 @. `% m5 y, {; G; y' H+ X. }
                .name = "user_led0",
5 v& B  g3 c; U; |1 T6 C                .default_trigger = "default-on",( S+ G& d; b+ c7 l, l! d& {
        },. P0 E) {5 Z: @4 P: X( z/ x- ~7 ^
        {
. X( p9 _( j9 e, o; C2 H& k                .active_low = 0,% E+ O4 f/ k4 f0 f) q7 `) ^1 d
                .gpio = DA850_USER_LED1,
5 J9 V& X" f: R                .name = "user_led1",
8 [0 B* a1 C& i% `5 j# C2 n                .default_trigger = "default-on",1 b. L% P$ u  L1 s9 W7 M6 R' J
        },
  [) ~  }. ]" o        {
0 Z# H' _# z/ y5 D, ~) L                .active_low = 0,/ Y5 g7 ^) o% N* l5 E3 D
                .gpio = DA850_USER_LED2,
: u# @! J) Q1 ]- ]# a$ [' s  U                .name = "user_led2",
) E# N( i5 A* _4 ~3 m) B                .default_trigger = "default-on",
1 F2 h6 R6 M& v" J, \$ @        },. y: s3 z- P7 z( Q+ C
        {4 c: r  Q  J+ b" x3 w3 S) [& e
                .active_low = 0,* \+ Z9 ^9 S" D5 ]7 J; R% z/ ~0 U7 R
                .gpio = DA850_USER_LED3,1 z, o3 X6 A2 A/ ~1 |. N3 c0 z2 v
                .name = "user_led3",
5 v$ ?/ X1 S1 [2 d* r7 S# I                .default_trigger = "default-on",6 B" B6 G, b2 s& N. d( ?
        },
) h" q6 r; q- u' J% s: l};* s  B. U0 L2 h3 L4 o* U# F
( T6 ~+ h. y) P' {& q- W1 y
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {  N: |* f; `1 @$ i( l0 z& |
        .leds = da850_evm_tl_leds," S( {# D9 y& j7 x
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
, i0 p/ D+ S8 [4 _2 e/ i9 O: c};
9 y; ?3 u4 u9 O( x# Y, v% ~0 e% l0 s1 A9 c4 d. G
static void led_dev_release(struct device *dev), T& d9 [) Q; A4 R" k( ]
{
  g* @/ e# a+ C0 G- w6 Z6 a6 H/ O};. U% O: h& I' O/ ~

- \) c) V* P5 H# H0 gstatic struct platform_device da850_evm_tl_leds_device = {
( S5 U' j$ O' j' }  ?: i        .name                = "leds-gpio",
/ s! r! B+ }" t; y2 ^- N        .id                = 1,
% G& g3 m  e* O2 V+ i        .dev = {
& H7 C5 C: K8 v                .platform_data = &da850_evm_tl_leds_pdata,- m$ f" @5 Q( k. d3 O4 ?9 S' j. E
                .release = led_dev_release,4 I- ~  u3 x$ x4 r$ e
        }" }1 V' d9 s. p  P9 [6 b
};" e! x8 u) D0 T  Z# r! a

' }; s5 i& i3 p0 X! ~6 cstatic int __init led_platform_init(void)
4 h7 s/ D. q# W, g; i7 n{
1 R* e3 O/ t2 U! e& s8 D4 n% R        int ret;* }: c% Y" b0 b% h+ |
#if 0, V! f% D8 G& L( T0 D8 v. H
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
( v% j7 {- V! l# s# c: u        if (ret)& d0 E( e* e! O7 |; e
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 T- }; @+ O* k5 s, h7 P
                                "%d\n", ret);. V5 |& ~! ]/ |7 \4 F, [- f
#endif
: y6 o% z( }+ Q1 B5 U        ret = platform_device_register(&da850_evm_tl_leds_device);
4 q' b( t7 `$ y( j* O2 V        if (ret)
. j1 u- m5 \8 h7 G' @8 Z                pr_warning("Could not register som GPIO expander LEDS");
; e2 T# X4 V  |, O' q$ ^        else1 c& y7 f3 h6 q9 K' |# z
                printk(KERN_INFO "LED register sucessful!\n");
# }6 n& V! I& I: v* K. d. q
- K) y/ B. s& p4 {* _1 q" [3 x        return ret;* V$ _* T! U* {6 z6 i
}" x3 v6 N6 U' w! X( w

7 A' i3 H5 |" v2 Y% C' `9 m/ ~) mstatic void __exit led_platform_exit(void)
3 D! o$ y1 Q4 A{
2 T! {4 Y: L: R: V0 l* y: M        platform_device_unregister(&da850_evm_tl_leds_device);. N$ G- v2 W' Z  X8 P3 I
( j# @1 ]3 q% l+ C
        printk(KERN_INFO "LED unregister!\n");
& M' f8 [% r) y' r3 B}; z2 \8 |, I: e, [' B3 b
- }( {4 N# L9 H. E0 K
module_init(led_platform_init);
# B7 ~% p5 F+ |- x" d  j2 fmodule_exit(led_platform_exit);. k, q0 @) W1 M; ~0 z: B# ]
9 \; G6 b) s# a9 R8 ~- I
MODULE_DESCRIPTION("Led platform driver");/ f" H, V9 w4 T8 b. Y4 e
MODULE_AUTHOR("Tronlong");
3 i2 S7 k: Y1 ^  ]  ^MODULE_LICENSE("GPL");
1 F& w+ b/ v. M: M% \8 y% J/ s- q1 d$ U
5 {5 A' ^. D% W8 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-27 09:01 , Processed in 0.057690 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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