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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。* N( P& ?$ `2 L' }; U' x/ u
#include <linux/init.h>( C  I/ x1 G& R# H3 P* ^9 m
#include <linux/module.h>
# C0 h1 O- l6 r3 h  D! Z#include <linux/kernel.h>6 ?" p2 N) ]9 R3 V( K- X
#include <linux/types.h>
! _( T/ T* A% V3 y/ x5 i, r#include <linux/gpio.h>
( P( y3 i5 f+ \#include <linux/leds.h>! t4 g) @3 H$ `( q1 N- Q+ A
#include <linux/platform_device.h>% x# Z5 Y. e# e3 ?, O

0 W" E& p/ H8 D1 d8 J#include <asm/mach-types.h>. D% M4 N& n) b( n' Z
#include <asm/mach/arch.h>
! F7 u2 |& W( j9 r#include <mach/da8xx.h>5 p" R3 ^# C/ K
#include <mach/mux.h>% V+ @! J- B8 }, z4 E. ?( B

6 D1 X. y- M0 ?' U#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)# V, Y2 D. {1 u3 k: C# J
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
! l/ k8 p: K1 d/ R# h#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)3 y& _! o( P1 R" d
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
0 b! K! B' c1 g2 q* N9 C$ C- W
8 p. C& G* W# Q" D8 w" M$ i# G/* assign the tl som board LED-GPIOs*/
2 J- R# r" F9 G) Z9 Zstatic const short da850_evm_tl_user_led_pins[] = {
. N3 ?0 I! J. Z3 p        /* These pins are definition at <mach/mux.h> file */5 L# P- j4 M  A: r. a/ g8 p5 q. `( o
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
$ ?8 j- o3 T) x4 d, O9 d        -1
: L! |7 ~4 @1 ?4 ^' j};. y. K0 R* I7 c0 x4 a. V5 O' R0 E
; F5 d% w" @9 D* b
static struct gpio_led da850_evm_tl_leds[] = {- V( [6 u& Z0 `7 n: O$ P6 x
        {
# A. g, f' c7 R) B( T                .active_low = 0,
2 }6 V$ V  F. @5 E                .gpio = DA850_USER_LED0,
. E& h  D9 c% _, N                .name = "user_led0"," L" k3 \; {# v' G% U
                .default_trigger = "default-on",( E4 \* N' N. F
        },
" Z. c# @+ w* Q& g& z. A        {  h1 F0 R# c8 Q8 @2 M
                .active_low = 0,
, z2 R& w5 w2 p# T                .gpio = DA850_USER_LED1,7 J( E2 z$ X2 N& q" B: u8 q2 E
                .name = "user_led1",
- Z/ q& S7 S- _0 f1 j! B                .default_trigger = "default-on",
% m7 R! W* I4 n( N9 m        },
" e7 F3 s5 K) h( n0 @. D( o        {
8 ~; v3 T5 z8 n& q4 G# x( B' @                .active_low = 0,4 `: d8 Z( c1 r6 a
                .gpio = DA850_USER_LED2,
3 @( z4 P6 N* F; g                .name = "user_led2",
7 ?2 t4 ?; k; S+ W                .default_trigger = "default-on",7 ~" V9 ~, N  y6 Y% c- p0 J
        },
) i' r) j" L4 X/ S7 r( n* U7 V        {: L+ A1 X& Z$ d8 j- C7 R7 Q
                .active_low = 0,9 b5 q- [8 X: h6 Y# t
                .gpio = DA850_USER_LED3,7 b" k! n) h/ m+ C5 j1 @4 c; @
                .name = "user_led3",
% @6 N: {! ~: f                .default_trigger = "default-on",9 o$ y9 `, u4 B+ j4 F, ?
        },
2 D0 J  I5 s( ?: r};
- W# Z2 m8 |% W0 }0 Q
. K& r7 V: `. j  y/ v" zstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
9 @# Q- u  B% Q9 @# Y' C        .leds = da850_evm_tl_leds,( f( ]: M/ O0 J0 m0 j+ s
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
+ ~. N8 q5 O7 r& b$ z8 P2 ]" O};+ s  p4 ]6 u- N4 t" B
- O9 N0 H' P" J! E
static void led_dev_release(struct device *dev)# t3 U% O! Z! i, ]  b" t. Y
{
7 G4 D8 Z' E' t. w8 S};4 ~% f; k( C4 O8 e* O
" o/ F+ Q# O$ o  H* n6 L
static struct platform_device da850_evm_tl_leds_device = {* R; f- e7 q3 O, K$ o) ^
        .name                = "leds-gpio",& V3 E# L7 S5 ~/ T# M
        .id                = 1,
1 _& G/ r; r1 u5 L        .dev = {( N; g* ?9 a- x3 ~
                .platform_data = &da850_evm_tl_leds_pdata,
  r" \) ~& v! A( E# S                .release = led_dev_release,
" D1 p: Y- l! l9 A; }" a( K        }: A( A/ H; M6 |& [
};
7 s9 O! }8 u% L6 X6 J( g4 K3 N6 C9 C, ]0 L1 E
static int __init led_platform_init(void)
' Y) i& b  F+ @' N  L% P( W' e) I9 [{
1 s* T: q1 V  X, O        int ret;
. h7 `' p/ w( ]9 [6 W2 q2 y#if 0
  ^; [  [3 t* B' j  i        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
- u0 ^- a2 X( m, P/ m        if (ret)
- Y: ^( t4 m1 I5 `                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"4 P1 _2 Z- ]) _$ K/ Y
                                "%d\n", ret);
8 {+ `; I4 y+ b" l9 l: j6 Z#endif$ f2 `7 h) c( N' i
        ret = platform_device_register(&da850_evm_tl_leds_device);- M4 }' `/ G# H5 ^5 k6 W
        if (ret)
! y- `  {) J1 G, J- @  T: [                pr_warning("Could not register som GPIO expander LEDS");5 V7 |1 E# n$ d5 H
        else' f5 p: L/ Y! A% S0 k  u$ l
                printk(KERN_INFO "LED register sucessful!\n");
* k9 F. P) M0 C( b! r+ m6 J
! |4 U% y: g/ t6 V        return ret;' t" j5 `5 _: a1 N
}
7 O: G% r, }0 O& w" h
& ~6 W: s0 c0 b; ?! T" ?+ astatic void __exit led_platform_exit(void)9 G- z7 [) |/ B- I
{
* I0 O* ]: N& K% L        platform_device_unregister(&da850_evm_tl_leds_device);. m# X4 p' Q: q1 d0 q/ S5 c7 o

1 @! E1 _6 P  W: T/ J        printk(KERN_INFO "LED unregister!\n");
" X2 D6 b  V- y* z' W}
$ [1 d5 m( u; A: Q. |6 g1 c6 p7 F
5 R, |% R# Q: [: ~: v' amodule_init(led_platform_init);
+ `+ T3 I/ ~9 J" }module_exit(led_platform_exit);
( p1 D" t/ f8 i- y& z! j6 V( a( t- [
MODULE_DESCRIPTION("Led platform driver");
* R8 l5 p) l: x: l% QMODULE_AUTHOR("Tronlong");
% l: `5 K2 u- q1 O# NMODULE_LICENSE("GPL");6 ]+ v, l, I. v

" b$ u. q2 u- V5 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-23 11:34 , Processed in 0.041887 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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