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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
; X% L6 V- e( x% P) `$ E#include <linux/init.h>, J. t2 r$ V5 y$ T7 `
#include <linux/module.h>1 P$ h: s* t" U1 s$ ?0 c6 F
#include <linux/kernel.h>
" U' ?) V8 @6 ?- L3 E9 |#include <linux/types.h>0 V& o: Q+ \3 K
#include <linux/gpio.h>
2 u1 A) \. {5 C! a4 l- `- K' B$ S#include <linux/leds.h>. r3 V* i. F+ |" Q1 N
#include <linux/platform_device.h>
  r) n6 C3 j8 N9 [4 ]0 s  X7 t2 Y" X9 B  a4 A! c0 K' _
#include <asm/mach-types.h>
7 D( D* x/ G# B0 A; k' l2 o; |#include <asm/mach/arch.h>/ u3 Q& i% ^& o  z, ]
#include <mach/da8xx.h>
4 J" _% X6 Y$ F#include <mach/mux.h>6 o4 w9 h; u8 }" J

0 r, M! h/ @0 Z* D5 N! H#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)* D1 O" c! l& K8 \
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)- B, E# j$ a2 Y$ t8 T$ X6 N* J
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
0 o# `6 k" ?3 P. R$ [#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
# z. T; }) V, h* A4 S/ R
" W" `: h& Z  {% k1 s* I, ?/* assign the tl som board LED-GPIOs*/
( h% f- O5 o7 d$ X4 sstatic const short da850_evm_tl_user_led_pins[] = {
# D& T- C+ k" F, {. R" `        /* These pins are definition at <mach/mux.h> file */
3 p0 a: x, {: R$ J( u        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
) Q% H' z( w$ G  E( n! x5 S1 {2 b        -1. y# i( i* l$ `( b% K; a/ [
};& {9 t9 q/ m# Y6 K  n
) _3 Q) v5 T) L5 a, r
static struct gpio_led da850_evm_tl_leds[] = {
4 N- w' K- ]5 K& w: P$ O        {( v" i9 `9 u* _( t0 v
                .active_low = 0,
, [$ {3 g) T6 d' W4 [# p+ o                .gpio = DA850_USER_LED0,
5 x# |' Q' {. L: `, E! ?                .name = "user_led0",( f7 c( O) F: D; c* c3 y  |8 b7 F
                .default_trigger = "default-on",
+ D8 `( u* ?7 w        },! M9 T. v, M* e) r. a& ?1 O8 d+ M
        {
8 V1 ]0 Q5 |+ V4 t& m) o0 e: E$ a& r                .active_low = 0,4 R& B" W7 f* }3 K2 V
                .gpio = DA850_USER_LED1,
4 l" A4 x0 k+ k/ c- ^                .name = "user_led1",* y# K) J. r  }# D4 h3 t# ^
                .default_trigger = "default-on",8 d, ~  i! Y! z8 D0 k& `' A
        },
3 b9 \. |; x! c0 j, W        {: U5 x* }0 V6 T# a, ]
                .active_low = 0,6 `& H' h1 W. h0 ~
                .gpio = DA850_USER_LED2,6 x4 \1 W+ X- |) X2 ~  ~# g
                .name = "user_led2",
* r* u* n* @- O1 R4 q* b3 M6 A                .default_trigger = "default-on",' m, P* [8 n; e1 Q2 V- O, m  ]
        },% t. b& X( e2 z: |8 M. n
        {  q* o2 X: ~- J' C- D6 p
                .active_low = 0,  @1 B, n- }) r
                .gpio = DA850_USER_LED3,* [9 C% E3 e- y% K
                .name = "user_led3",
" v' D+ ?4 z3 p5 `                .default_trigger = "default-on",: l* ]* v; D- q( K
        },% J" l5 C8 e& k. L( Q+ R
};: [; T! q2 w+ `* H- o' ?

. Y5 B1 v( \# [" dstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
. i! m% X% S5 C5 d; q- ]        .leds = da850_evm_tl_leds,
6 N* k- _' {# \, E4 n% w- f9 W        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
* n/ V9 D2 o' u; w+ H9 y: F};
3 o. E" A9 w7 u! r# I! o( S, Z+ S
static void led_dev_release(struct device *dev)
' I7 I, g* G2 t. ?- G{
. X5 p& h" M9 b  y9 c/ k};
1 U) F, i3 u0 B3 X( L5 F& Q3 u9 |# ^$ s: \- y* B
static struct platform_device da850_evm_tl_leds_device = {
3 v4 j$ ]& v- @2 n        .name                = "leds-gpio",- g; u& t- B& I0 q' K( d/ Y
        .id                = 1,
* w# g+ ^/ M( K5 t% x$ b& `        .dev = {# z- D" j; r7 B( d/ P
                .platform_data = &da850_evm_tl_leds_pdata,
& l, s5 E! j2 t6 ]3 f, M                .release = led_dev_release,- Q7 a0 i. L  o2 R$ E
        }+ \, s, X. i2 }
};1 ]1 ~% I/ Z1 N+ L( C6 J2 O: I5 V
* J9 F1 ^8 ~8 I4 A- j( r4 C5 Y
static int __init led_platform_init(void); G6 n4 W6 x. d3 z' y; t
{- Z4 B. i* z2 F$ c# x
        int ret;5 f! G" i* `; j/ O- A; ^: [9 O, o
#if 0
, |( s' l4 X$ @+ m        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);# I8 m6 y8 s; U. o, \& h
        if (ret)
' Y# [, Z: a( s. a6 Z, x                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
0 k2 Y5 E- y1 P- W9 u7 X                                "%d\n", ret);
& }! Y4 C  a! m1 z& C4 w#endif0 f" s  q6 v. Z$ @9 }
        ret = platform_device_register(&da850_evm_tl_leds_device);
$ C0 b5 p$ ?' [+ q4 `9 H( S        if (ret)
; O; F" l+ W$ l" k! o                pr_warning("Could not register som GPIO expander LEDS");
  D3 j& g$ X# W6 x" s( g* ]' M; @        else
1 n  }9 Y) z3 c& p9 F9 ~                printk(KERN_INFO "LED register sucessful!\n");4 a5 U  G2 u5 X, l7 @$ W

  j' e0 p- T  Z( G        return ret;/ k8 w/ r; M9 q2 F5 D' P7 i
}
! T% K. v, U; Y8 G$ e' A" B/ c
2 \( q3 W2 z& P; B1 M1 N- A. Ustatic void __exit led_platform_exit(void)/ j( W$ M4 c5 O. ~' d4 _. W
{6 Y9 Q) E2 o+ |6 p0 w
        platform_device_unregister(&da850_evm_tl_leds_device);
) e  s+ s! Q6 l, n; K: ]
/ h! M9 v! l; K9 ?        printk(KERN_INFO "LED unregister!\n");" z, K! h/ T8 N; d! A6 S; ^" f4 l. K
}
# t9 H0 @9 q0 y' k" }
. z6 O" d2 T& ~0 F1 omodule_init(led_platform_init);) F7 t9 v! s0 o! A6 J( r' N
module_exit(led_platform_exit);6 a# z7 M/ u2 L0 o) B* w7 B

, ^; ~( S/ V& @8 \- O) V) uMODULE_DESCRIPTION("Led platform driver");  ~& |" N: V4 r" v
MODULE_AUTHOR("Tronlong");
  z* M% A  M& ?MODULE_LICENSE("GPL");5 V( l9 d: c" m) ^1 s! x! F5 \. l

$ R+ R* N3 N7 p- w" B, g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-6 20:28 , Processed in 0.046419 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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