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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。" @: k5 B" c$ r8 s2 Z$ H0 l
#include <linux/init.h>: m7 [; G2 J8 d; d; E9 o
#include <linux/module.h>
; e- U. k/ }: ^6 S% Q#include <linux/kernel.h>; m1 T/ ]1 F6 ~# u2 |/ e) G- C- J
#include <linux/types.h>
( u8 Y5 ]% Y9 p( k, R9 L#include <linux/gpio.h>- Z$ R9 ]0 \9 F9 i! D' F. Y
#include <linux/leds.h>
/ S$ f) F! L1 ]$ D  J7 z#include <linux/platform_device.h>3 t/ d! a4 ^+ y4 `/ ], j
  Y/ ~/ _, L6 s; p' W( A
#include <asm/mach-types.h>
  }: X& j+ W( J! k- O* Z/ s' w( W#include <asm/mach/arch.h>  I. N/ K/ B( L2 C( _+ `
#include <mach/da8xx.h>
2 P0 @0 T! F' M1 ~#include <mach/mux.h>
' ~, d7 n1 `( T. V6 ?) C- v- ^! P6 l& c# C6 R: A1 X
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)  P; \1 K7 V  s! `2 D& [
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
) c% M( B2 g' v) N" B0 W9 R#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
; T7 e% D3 B- T1 ~' p( O& J#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
: X& C+ H+ k5 ]6 Q; `( `2 ~7 H
% T, v7 V  b" Z1 ?8 V$ D/* assign the tl som board LED-GPIOs*// t( }. j1 w* F$ l* ~& H
static const short da850_evm_tl_user_led_pins[] = {
5 r3 d3 C  ]# v$ _) V( }        /* These pins are definition at <mach/mux.h> file */
+ S: ]! [. S* M$ }        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,% N7 f5 E) }: _6 l; N$ P9 D
        -1/ B0 T4 k. l6 r9 z, P) D
};
7 X) p( S) g3 i
3 s. G4 d8 S# k* m8 }static struct gpio_led da850_evm_tl_leds[] = {
0 ?2 }* p3 C5 ~! q4 i! L        {
0 J1 R( y1 _% Z$ Z! W& a                .active_low = 0,
+ x, y' s) V  l9 y: M# w                .gpio = DA850_USER_LED0,* g, V9 N6 _  u1 O+ ~
                .name = "user_led0",4 P5 U% k+ X+ {6 f  z# ^$ a
                .default_trigger = "default-on",
5 \' l  R5 v2 N        },: w4 R% z/ W; M4 c; W* ~7 k
        {* \( g" U8 q/ c7 L
                .active_low = 0,5 j- {* R, p: m6 F5 W( X! P& n/ {
                .gpio = DA850_USER_LED1,
. m) s" B# F' {  u# k: F; q; x. K                .name = "user_led1",
/ u% |7 f5 b% C% H( v3 P% @                .default_trigger = "default-on",
  T5 u- o6 E* R        },
/ l% v) j* n. P$ |) k6 T2 Z        {0 ]5 c- o8 l: C' V& _7 w* L$ v+ G
                .active_low = 0,
; x' b5 V3 B7 {$ R                .gpio = DA850_USER_LED2,& x4 J7 B4 f+ k/ G
                .name = "user_led2",
3 V8 s. m. O7 L0 N5 F                .default_trigger = "default-on",
8 W+ q. u" j7 k. D/ A# Z9 }        },
3 h" a) t$ |2 J9 ^        {
  d" [8 q+ a- K: Q" H6 C7 V& @+ @                .active_low = 0,/ G8 \1 B# s) X- ]2 j, p
                .gpio = DA850_USER_LED3,
6 W" x* C1 @- ]) t                .name = "user_led3",
) q1 v5 Q2 F; U$ i1 [5 N                .default_trigger = "default-on",- `  Y2 t, m2 {; X; a& I
        },
. J5 O+ A! `2 ^};  L5 W: |" H  \0 H6 F4 ^# Y

, w) A3 R, p, Pstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
' }7 k6 e$ r6 V9 ~( S% w$ k        .leds = da850_evm_tl_leds,
4 i" K8 |  H* {) z! N9 {. e, }2 ~        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
/ B/ ^1 {/ }$ g- x9 N6 P};+ e5 l" D$ v" `( [8 f
5 r, _1 E$ g/ g* \/ W$ W) O
static void led_dev_release(struct device *dev)
7 b- F' @! z- B7 Q) F% t. c{
$ d* M% e/ o, \/ \" U, x};7 I8 Z9 @& a& B5 J, a

% `& m" f" o0 ~; Ystatic struct platform_device da850_evm_tl_leds_device = {
/ u; N. ]7 o, |" G% n" @: a        .name                = "leds-gpio",
. V, x3 l3 J# L" j        .id                = 1,
3 ^- e8 n0 L' q& S; l: P        .dev = {
0 K0 C# W" p) j7 X* y3 `                .platform_data = &da850_evm_tl_leds_pdata,1 ^! F" L- \) r& p" Z0 c
                .release = led_dev_release,
( E+ m- O, U0 y& P4 m        }& |8 c% U% N, b2 r) M+ r
};% B( z+ J& y! `! ^3 H: l  ]
% V" X5 e& g% D4 \0 p+ q
static int __init led_platform_init(void)& a5 h7 D4 y3 I7 m; O) j
{
+ L5 K/ ?3 `) R, c: ]+ }        int ret;8 o0 p; P) ?+ Y9 m8 T! s
#if 0
/ R& o0 H, H* `' P; X3 [( }/ L        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);0 O. l, |8 M$ C8 D
        if (ret)4 N3 M/ i. f& }! [& G6 w# ^
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
! ]& a& w+ ]/ X* |( \8 `) _' k+ P                                "%d\n", ret);' d9 o0 a5 L# j
#endif
) V! ?9 I) W# B& d7 ?, ?  p        ret = platform_device_register(&da850_evm_tl_leds_device);1 e% ^- m2 n8 V  G( x
        if (ret)
' z! g1 u. r" _" A4 d! [9 [8 W                pr_warning("Could not register som GPIO expander LEDS");
% Q3 _3 o, O; _  r4 v        else% L9 c0 B# c2 Q4 z2 c& ?& u
                printk(KERN_INFO "LED register sucessful!\n");! b+ b/ L" Z+ T2 o& v
# W; B) i+ \% q2 A# T7 W
        return ret;/ D- z! @$ D  ^/ `7 i! A
}6 i* t. E7 t5 Z/ t1 C# ~& j+ ?1 Y3 ?
+ k" s4 |1 N/ c% x$ I. D
static void __exit led_platform_exit(void), v8 U5 Y1 ]; v- V
{
- x" z5 H2 b6 n% @2 e        platform_device_unregister(&da850_evm_tl_leds_device);9 `" n( {3 @; u3 I9 E4 j

+ l& W9 }5 q; E6 P        printk(KERN_INFO "LED unregister!\n");6 J/ o, U7 U3 I/ L& ^/ A, ^/ i1 v
}( m8 {/ S- B9 O; R) f& T

$ p' U$ z  f' X; xmodule_init(led_platform_init);
, Z# v/ w! |8 L- q  b0 y7 o5 Lmodule_exit(led_platform_exit);
: g- b$ V- k3 S& Q6 |8 g! Q& U- k- e  H3 }) P- B2 ]* x
MODULE_DESCRIPTION("Led platform driver");
) W* |! B. W; q+ xMODULE_AUTHOR("Tronlong");
. v" P4 Y  H) HMODULE_LICENSE("GPL");
) S: u: T) W7 h1 @
- u" a+ U$ D( }' s! @7 [8 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-24 11:15 , Processed in 0.038695 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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