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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。5 k% `- Q( X1 M( |, O/ W
#include <linux/init.h>+ ~# o6 m1 [9 `
#include <linux/module.h>
! ?+ c  F1 i' j#include <linux/kernel.h>
* F  a: q" X% f0 h- p9 n7 F#include <linux/types.h>
( Z, t: N& g0 E8 z) i#include <linux/gpio.h>3 m+ O. t, ~4 L7 q1 {4 D' A
#include <linux/leds.h>
+ Z; a5 J/ K$ N! d5 y- `& q#include <linux/platform_device.h>
& O6 L0 C9 X9 E7 S$ ?
. _$ U' z  v; f, X& T( O: g9 Q#include <asm/mach-types.h>& a8 ~0 u4 i! }4 G& Z) ]
#include <asm/mach/arch.h>
3 @0 _( S7 a0 Y* K2 y#include <mach/da8xx.h>
0 m! q' `# c2 l- \4 u6 q#include <mach/mux.h>
7 a* P( B8 r7 F/ G; f$ ?3 V+ w9 f# Z8 K; X, ]+ Y# f0 g$ s
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)0 N0 `  Q' w! A* B. s9 F5 h
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)4 L+ f: u, h( ~8 `
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)! o) t3 ^9 g- X  |- X
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)# J7 s: i; ~: @+ [

  c1 v" t2 t. E! P+ C/* assign the tl som board LED-GPIOs*/
1 M5 k1 M$ p. Istatic const short da850_evm_tl_user_led_pins[] = {
3 V( y" ^  E) J; q8 K% V4 y# C        /* These pins are definition at <mach/mux.h> file */
. N4 t) W$ K  S3 g5 ^- W3 m        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
8 J  Q: k, Y0 X9 a        -13 l& Q" P# Y& Q# p! w6 q
};
0 K' l# l1 e+ X# W; ?+ ]% p' z/ {
0 T4 s( e2 W1 M7 Ustatic struct gpio_led da850_evm_tl_leds[] = {  ^, W+ b+ d8 G2 z$ f* i/ \* t
        {+ x+ y* k8 {) L; F- R- y; r
                .active_low = 0,
. W: o; T: W" |% l2 K# j) k                .gpio = DA850_USER_LED0,9 m. H: }- x8 ^, P
                .name = "user_led0",
6 b" k: K0 ~/ m* c# x8 ?0 X                .default_trigger = "default-on",7 W  r, W9 S8 f  ]& B! A: G: W
        },
, i/ N9 v/ a6 n- G        {
  Y) z# ?" L, l; r( U8 h9 H3 C+ x                .active_low = 0,
# ]: [6 j( z( J, w" M                .gpio = DA850_USER_LED1,% O1 h( P1 d6 f5 X( q6 D# I
                .name = "user_led1",* b# ]! r/ b7 U: `
                .default_trigger = "default-on",4 ~+ i7 ?2 ]9 f. n
        },
( S% o% o; Z% f- Q5 p        {+ j7 ]) _* S2 g! s2 ^  H- O
                .active_low = 0,; X0 G3 N/ f9 w3 s" l* x0 F# R8 Q
                .gpio = DA850_USER_LED2,; {, X% f8 x5 W2 w
                .name = "user_led2",
  [1 ]3 H2 i- s) _- ]4 F) C; |                .default_trigger = "default-on",* u4 G' P# T4 F1 s8 }
        },* M! p0 v; N( K+ |. V
        {0 X8 ]* v3 }0 W: r1 b
                .active_low = 0,- F; L% K- ~+ z$ C8 s0 ^
                .gpio = DA850_USER_LED3,; C0 j$ ^! \+ x) f4 }2 [
                .name = "user_led3",  R5 f8 T6 R0 ^, d! ]
                .default_trigger = "default-on",
4 [8 A" }+ U% \. U7 t        },9 M( e7 f6 ?6 ~0 E8 p
};- P* W& P  G) q
/ R5 ~4 L( I) b  ?+ o
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
3 N; n5 W5 x  Q' k4 G/ ?        .leds = da850_evm_tl_leds,
6 |- ~. M6 {. F7 d, C' z2 W        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),% v) Q9 b, ~5 _- v4 t
};
( ]2 [+ y, f. n" p( w9 N. w# W3 C  |% D
static void led_dev_release(struct device *dev)' [. D3 o8 @2 ]8 P4 y
{1 b* s! t. r( L; ^
};% }& f  F- a* U! x3 w+ |! p& `
+ w  k) q! k0 Y  s/ q
static struct platform_device da850_evm_tl_leds_device = {
/ h% V* J' X1 U6 Z- H. |# p' e        .name                = "leds-gpio",
. a( x; `& u7 }$ {        .id                = 1,
5 C8 j9 [: p( A1 R' k        .dev = {) e  p! ?- Y( ~& n1 S
                .platform_data = &da850_evm_tl_leds_pdata,
4 `6 i& }( O# J% ?% Q, M; D: g1 s                .release = led_dev_release,
' ^7 D* b& [( s# O+ s        }
$ N- i6 O: l) @};
3 z* y7 m8 X" I# [. r  j3 N' g% O0 J" _% M3 j6 \  `+ R
static int __init led_platform_init(void)
# ?* c6 Q  L$ K- m7 x3 z: P{' \* \3 ^. {) x1 v2 t0 d
        int ret;
9 `! C) C- e6 ~" |" z2 L4 }* Q#if 0% s0 d+ a5 p0 X% F- |4 P% r
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
$ c1 D  j- ~7 n+ B        if (ret)* |0 b7 X) i! Y4 \
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :", ?+ b$ d9 D3 V+ B0 w
                                "%d\n", ret);
/ f" L+ b! A$ r- D#endif
* z. Z. o8 i* C- M; z- V# I0 P/ ]        ret = platform_device_register(&da850_evm_tl_leds_device);
# ^2 E* G( K; X( A        if (ret)
3 S# F% }5 m$ ]" `; e% m                pr_warning("Could not register som GPIO expander LEDS");
; W/ E3 v3 s+ Z( O0 n" y        else8 N# {2 }. F  J3 t3 n" q0 s- S2 v
                printk(KERN_INFO "LED register sucessful!\n");/ x% `% c+ l* f8 e, `

5 G( s0 O9 P5 q) \% w5 v        return ret;  T" B# d% a$ f* B
}* E+ Y2 p7 \9 N4 V& x' s8 a
) |9 N& l0 Y% Y( F0 e/ N  R! F
static void __exit led_platform_exit(void)
% R4 P* i3 ^4 X. L% u# S{( G- G4 ]8 ^/ P4 V
        platform_device_unregister(&da850_evm_tl_leds_device);
  B# o  S: ~$ m" q8 A$ h- l
8 k- f9 o  A1 z5 ]( _; u        printk(KERN_INFO "LED unregister!\n");
. b" i* i: l% F0 K7 W- \' b# f/ T( r}' @5 o4 R, j. e9 W, ~

4 j6 Q1 {- X4 c# E) H- O. |. k4 |module_init(led_platform_init);) a: i% b: F# E# c# y0 \
module_exit(led_platform_exit);
1 U: @' C: V! [% z0 ?) r# Z! z: k, W
MODULE_DESCRIPTION("Led platform driver");
, N" B# X! L; u' SMODULE_AUTHOR("Tronlong");# S& i2 M0 B& W( G
MODULE_LICENSE("GPL");
2 a- k. r' A  X0 B5 d5 x1 b. `, [* Q+ t9 k4 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 00:10 , Processed in 0.045820 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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