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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ `4 O) @* M' z7 B5 J5 y8 {
#include <linux/init.h>( P! z: c0 s# b. z5 x: o0 M9 B+ C
#include <linux/module.h>' `9 V0 p' q7 g0 j/ E. n4 `
#include <linux/kernel.h>% y8 t+ Q" g( R9 C
#include <linux/types.h>1 @; V3 [: f% K6 O7 o& r
#include <linux/gpio.h>
% I. g2 {& k1 ]( B' b# z#include <linux/leds.h>6 a) G+ O' q) `. _( j6 c
#include <linux/platform_device.h>
, n- u9 b: r' v* E: I3 Z7 r# j7 x
#include <asm/mach-types.h>6 Z/ E6 @8 a# e* a) O5 K
#include <asm/mach/arch.h>, ?" o0 `5 I, C$ T  V4 ~0 n
#include <mach/da8xx.h>
; J3 I( S9 k, `# \- {#include <mach/mux.h>) z) P# O7 P8 O) `- Y& _
& X- W8 f/ x) T6 ?% f6 J4 b
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)8 h+ a+ U. k5 J7 Y* A
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)! W5 X3 w% n( X' Q! `7 d. ?
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)6 J/ m' }: ?$ o+ E: r: q
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)9 }' B. ^2 r& ^; r' T6 r

+ b4 Q% R- Z) f/ M/* assign the tl som board LED-GPIOs*/
  d" T  n( U  S5 Hstatic const short da850_evm_tl_user_led_pins[] = {
8 e# Q$ x! S% T        /* These pins are definition at <mach/mux.h> file */
2 i" h+ S9 c+ x( H% [% Z        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,7 G8 J0 H! b7 T( }* g7 x8 S
        -1
: B1 P0 a/ i8 N& v5 n9 k$ B};' f; C' k2 _4 f1 H' j' n- Q
" _% U# R# l# e/ l3 t
static struct gpio_led da850_evm_tl_leds[] = {5 x; C! R, t# i* X! K
        {
8 `" `! P& |; C+ c6 O# W9 F" g                .active_low = 0,
2 u5 l" L! s( |" J' C$ x; q$ \) q0 J) x                .gpio = DA850_USER_LED0,5 K- o- z$ s6 q+ [9 p. U  v8 ?! Y& z
                .name = "user_led0",
1 S. s0 Z# S, P1 C  d# }& J+ C% D( [/ ~                .default_trigger = "default-on",5 C# F% q4 P% i0 f9 n2 f. S
        },
9 H0 [. M2 C, r5 Z        {+ a1 z- i8 l1 \  C! p
                .active_low = 0,. o8 }9 {$ \. X
                .gpio = DA850_USER_LED1,  I1 {" J" n- u* ?( ~# G0 J
                .name = "user_led1",
1 F4 }$ R- d. M                .default_trigger = "default-on",
; P! |' O! b# X' o7 p        },
) L. a  q7 ?! B/ r) |& q        {
# E) s. i5 O9 n                .active_low = 0,. v# D6 h& e$ E8 z+ j0 g4 n
                .gpio = DA850_USER_LED2,
! e$ O4 E! N3 w                .name = "user_led2",
' y/ n8 s# `" `' I, O2 H  \. K$ M. s                .default_trigger = "default-on",* R; o& T5 J2 v- ^' ~
        },
* n- s0 r- t4 o5 W/ t- ~        {
. h. y  O1 [. ~8 i, |                .active_low = 0,2 A5 F7 v- M4 I8 a/ @) d
                .gpio = DA850_USER_LED3,  G5 ^1 g2 a" n3 T
                .name = "user_led3",- i" E$ ^3 m# r
                .default_trigger = "default-on",
/ F6 J+ d, `/ y; X4 K  n8 p        },
" `+ x9 M8 W' H& O+ ]/ c9 a- h# I};+ I: x6 x- |$ S; ], E

7 E& U) F+ q5 {, istatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {+ o" Q  j8 a( K' u
        .leds = da850_evm_tl_leds,+ F7 P4 e# Y: S& b
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
  F$ ~& C  w. W! {, M, }1 a( D};+ }# |% z2 ~: w5 c/ O
. _4 _+ ?4 Y+ V. d: {3 A9 E
static void led_dev_release(struct device *dev)
* _* t3 d. S$ e, R( `( X4 N{# Y& ~9 x  d, `9 l3 w( u4 N0 B
};! r2 y: S, n3 ~

; w0 _$ b6 M2 g) zstatic struct platform_device da850_evm_tl_leds_device = {% c2 _% {3 z& r
        .name                = "leds-gpio",  \8 p( r1 u' @7 ^
        .id                = 1,
5 A# A1 E5 A7 {% m( m; }- M        .dev = {& d5 f: l6 X& i) h; @( d1 x: `
                .platform_data = &da850_evm_tl_leds_pdata,  I+ e: d: ?+ J* a1 b9 F8 X/ e
                .release = led_dev_release,
  K; z! {, w3 \        }7 ?- o" X2 E; L2 V8 _  _
};
* ]1 `* F9 K/ ?3 R0 r4 J  ~/ V/ b( m" ]+ j- X$ l7 N) r4 K- a
static int __init led_platform_init(void)* v7 r9 q1 R+ v8 I& k% o
{5 K, r1 }1 t; s% [- O1 V+ p+ |
        int ret;
) a6 K& d+ U2 u# V7 w#if 0- d; U1 c0 r7 N( t9 l4 W
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
7 V) s8 i9 m. H' x        if (ret)
6 Z% a9 x" p5 D9 f% Q5 t9 ]                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 D5 H9 Q0 O  J7 J' f  G" [) [3 x
                                "%d\n", ret);3 }6 i, u; z2 i5 @
#endif+ _3 }2 B# P. D$ v3 i1 s
        ret = platform_device_register(&da850_evm_tl_leds_device);
" o9 j; L" B$ M# U        if (ret)
# e+ }( W# R% V& Q2 D2 y                pr_warning("Could not register som GPIO expander LEDS");% }( t3 l  r8 F: z# m, o
        else% q9 t6 o  Z1 B+ H5 [
                printk(KERN_INFO "LED register sucessful!\n");
) }8 o3 N. _/ I
- ~8 F5 T. ^5 @3 s* F: H  S        return ret;
/ X8 W* y5 v  s" _}1 @: ]$ [/ ~: p) d* R" C; Z) M

" [, H. G! i. Fstatic void __exit led_platform_exit(void)
/ q2 j! `9 M; p) J: P9 R; t{& O" w6 R5 p  n/ U* @
        platform_device_unregister(&da850_evm_tl_leds_device);
" d! Y+ a: a6 e5 J/ U8 X
4 A% x, i6 \5 Z) u4 l- F        printk(KERN_INFO "LED unregister!\n");& e, E7 k, S# b" e
}
. V9 z  a. U- E- j! g6 @/ X1 ~2 Y' j( A4 n5 G9 d  M6 J
module_init(led_platform_init);
# {, s: j5 d9 C! i) N! v3 k2 Tmodule_exit(led_platform_exit);
$ n, N( O) y0 R- h* D% d5 a/ b5 Y2 K2 ^
MODULE_DESCRIPTION("Led platform driver");
" ]7 T1 C% g% k& O' }/ S; EMODULE_AUTHOR("Tronlong");
" _7 k" ~. s* ~, {# wMODULE_LICENSE("GPL");
7 a& Q4 f* \, N
1 c7 O8 g: |) ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-17 06:20 , Processed in 0.039350 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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