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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ m( t. R& b$ ]  M3 T6 G2 g  _9 j
#include <linux/init.h>
2 V. v# u& f/ |9 I#include <linux/module.h>
0 D7 N1 P- ], ~$ v#include <linux/kernel.h>
# N. ?4 J" k. b% D. K8 u' w#include <linux/types.h>& n. O2 k+ K, C7 L+ d: {5 x7 b  i
#include <linux/gpio.h>
# O3 W) K" Y% g7 Y#include <linux/leds.h>) N5 r; v- ]+ [" n( }( D$ w
#include <linux/platform_device.h>
5 W9 t5 R  B: o) O2 L! l
5 l& S! f$ O2 Z' w: |- Z#include <asm/mach-types.h>
( ?4 K! ?6 k0 U7 x* X#include <asm/mach/arch.h>, l# P) y  g$ f5 Y  M  I7 z
#include <mach/da8xx.h>- a( m5 c% E0 }# {* [" y5 H! o
#include <mach/mux.h>
- v. e& P6 f: K6 B& x8 D: R! v6 M, J- @& N6 P9 e
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
6 ^3 A! c- R9 B: t#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)% S1 a3 x; ^& x' O/ ]3 m
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)7 g6 `! u) i$ Y  k3 K: E/ `+ w; |
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
  N8 S2 x$ P, T$ g2 Y# K% e# J/ ]! j
% z: v! L) U) @+ [! F9 L/* assign the tl som board LED-GPIOs*/# [# f: ]0 b* Y
static const short da850_evm_tl_user_led_pins[] = {: p8 h6 q; y) |$ O  v+ @
        /* These pins are definition at <mach/mux.h> file */
; h+ e9 V7 h+ K6 m( w+ Y        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
9 E, ]* S$ v9 G: l        -1
! O" O8 o6 t% g. c  V};. U7 K! W9 V$ k4 v3 `- }1 Z
( O1 @/ j1 x) C0 W' G3 ^( b
static struct gpio_led da850_evm_tl_leds[] = {9 ]7 x. @% M# n4 x2 G9 s) ]
        {
5 J3 v9 |* D+ s8 z  n; s                .active_low = 0,& [" O; W; }; D* R, i2 L) t6 p
                .gpio = DA850_USER_LED0,- |+ u! z7 I' R. \* \% e+ T
                .name = "user_led0",
# s+ J% j) H3 e4 D3 P                .default_trigger = "default-on",
% H) M% ]* z  s( @        },( r, u* o6 j8 U4 ?( `
        {
9 `7 m+ c( Z0 L- M                .active_low = 0,
3 G- x. @7 A) m                .gpio = DA850_USER_LED1,. U( c# i; z- y3 f0 k
                .name = "user_led1",+ U6 S. R9 W3 |; j  d# l# e
                .default_trigger = "default-on",
+ R" ?# H6 S; N5 p* M/ T* ?6 _        },( T. ~& c* b/ l% F8 p( r7 X
        {1 ~9 a" j3 ?5 k4 Q6 K0 u( g
                .active_low = 0,
) l9 W3 f& y- F$ F6 W                .gpio = DA850_USER_LED2,
4 E( S8 b$ R  r9 {                .name = "user_led2",1 |: [2 K+ `) c! i2 R: |& }; a7 ]
                .default_trigger = "default-on",
! _: O! [: k) ?& X) Y. W6 _$ @        },; x9 ?. V. Q) i/ a
        {3 t3 S4 p" p$ d$ s, r% K: b
                .active_low = 0,/ R. o# R( {' h5 b. ]) W
                .gpio = DA850_USER_LED3,7 I% L; W$ y- i/ ?, B
                .name = "user_led3",
3 E# t2 t9 W6 z' b$ U                .default_trigger = "default-on",
7 S4 J/ G& Y8 F, W& m        },
' p$ L8 g. V0 E8 E5 R: s! Z4 e! @};
0 ~  e/ l: q% U) o
2 b" B& D; w! E4 X# G! E) _static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
1 d3 ?: F' Q, z+ i' ?  J        .leds = da850_evm_tl_leds,
4 w5 L. O* q: r: O        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),2 V( T3 R* |/ Y
};& c5 r3 g; F' {  Q' C5 N; D
; F4 v' N1 o, z% m  `. K
static void led_dev_release(struct device *dev)
. z9 M- C7 L. K8 @0 {7 t{4 N5 V) n2 v4 h, o
};4 J% `; ]: q& A

3 r2 t& n- d7 w2 I- S) b7 R# d. d/ f7 D9 mstatic struct platform_device da850_evm_tl_leds_device = {
# S2 \1 C' r, |0 I" U$ T' U        .name                = "leds-gpio",8 f" x3 y) n1 N* F9 T: a
        .id                = 1,$ G& @) r( V3 a
        .dev = {+ V8 n! o5 v- H0 X; C/ d9 b
                .platform_data = &da850_evm_tl_leds_pdata,3 B) P5 S: c& J+ ]: [$ e7 p. _1 @* t
                .release = led_dev_release,& a$ a! G2 {; ~# O% {
        }
1 x& E8 e* ?$ d+ u4 L};5 b6 O5 V  ^9 i+ z7 n/ N7 M# C; U

( E0 f; k2 o" O  T' wstatic int __init led_platform_init(void)$ P- {, F2 X$ y4 z6 ], O2 S! J
{; J; y8 o& r% h0 k" Y  @& \: ?6 w
        int ret;% X. t" j; p. b0 x" c( F6 I" a
#if 05 M$ L' {0 Z: ?7 W* T  W
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
/ S3 H. [  ^# L. ~& `* W! c  C        if (ret)
" W! v* G5 ~/ H- k: T* k                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
& C7 z$ L" V$ v5 p+ Q" t6 ?                                "%d\n", ret);
. ~6 Y2 U/ u1 ^3 ^9 p#endif
9 y1 E6 o) U3 ?/ x  g        ret = platform_device_register(&da850_evm_tl_leds_device);
7 Z8 T7 ~; r$ f: A, V9 E$ c        if (ret): H: y( _; [# u7 p( F( q! ^
                pr_warning("Could not register som GPIO expander LEDS");
1 ?( z) R$ D( {0 h        else7 D! ?8 A* w, B% k7 n. m# B* M* |
                printk(KERN_INFO "LED register sucessful!\n");
& n# l4 U- g- {; |- ^
3 B5 \+ ~9 B- p+ b4 t( r1 A' ~        return ret;8 l4 y; f: S) C. `* T9 m
}$ O+ g- _+ ?$ w; V6 ?
: {3 r  @3 I4 u
static void __exit led_platform_exit(void)
1 \) [  c) K6 B0 p) C" V{+ m: C4 ^- D& `8 p
        platform_device_unregister(&da850_evm_tl_leds_device);3 c6 Z3 \. w1 ~1 ^, k* w: l
) p& g8 _0 Q5 `- i5 u, h
        printk(KERN_INFO "LED unregister!\n");- A" T' `* k7 `4 H  b" l3 T
}
2 a. V: h- v3 R& W' j* `
0 O- [/ A- Y5 h" y; jmodule_init(led_platform_init);) J* V2 h. c% Z1 {: u
module_exit(led_platform_exit);
& u* H6 M) @  Y% M: K$ h7 ~0 R- Y1 |! h6 w0 b6 q
MODULE_DESCRIPTION("Led platform driver");
. {% ]/ R8 C0 D0 k' UMODULE_AUTHOR("Tronlong");6 o5 N8 ^  n' ?7 Z) \( Y" e* k; d
MODULE_LICENSE("GPL");* n* o; p6 I$ [1 Q% u
5 J+ d. P7 ?8 u( T7 C2 o8 c2 G; |7 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 05:09 , Processed in 0.044114 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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