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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。# f' v6 a. q. d2 F7 ~! l
#include <linux/init.h>
' L5 o0 n9 t$ L5 u5 _+ |#include <linux/module.h>: e0 _3 F' }1 F- g' N
#include <linux/kernel.h>
. B% q$ \- I0 D& s% N* _& H/ q#include <linux/types.h>9 J" ]! Y% B$ {+ k
#include <linux/gpio.h>
9 g$ n( [6 d1 a) M#include <linux/leds.h>% U4 ?; T5 i, j9 f9 Q/ o0 L
#include <linux/platform_device.h>& R& J! i" N( N" R: C8 z; m: R
0 B! D; y8 b2 E- w. V
#include <asm/mach-types.h>
, I$ v4 J, X- i$ t5 m#include <asm/mach/arch.h>
8 W* r7 D% Q2 M8 B8 f4 P5 {( J3 W#include <mach/da8xx.h>) ^' A; N' T" Q- y
#include <mach/mux.h>( L$ o& Q1 B) Z; _
, q6 R# h. X. g/ a, v
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
2 ?# J6 b2 h* r& ?1 O6 Z" y#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
: j$ A' N& q) E0 f0 ]( z: W#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)+ q: c3 J; H' J5 J
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 ~2 W1 M3 o/ \9 x' Z2 N. ]
! S% x6 o* X  H8 ?  f
/* assign the tl som board LED-GPIOs*/
5 ~2 |' Z' ?: {7 e9 V; tstatic const short da850_evm_tl_user_led_pins[] = {( C  O8 e8 A  F+ ?2 S7 R" u( p
        /* These pins are definition at <mach/mux.h> file */  I3 j  u2 z/ I! Q3 R8 }& a+ j& j
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
; @9 J# W: h2 ~        -1
0 L) ?8 F- r7 |: [2 o) d. b" e, V# o  K};1 N8 X/ O. C/ T
" n* h9 f( n1 Y, q6 c
static struct gpio_led da850_evm_tl_leds[] = {
7 |* Q. P9 k( Z2 w        {- ~3 m& \% v& I3 e9 e) {5 b5 h
                .active_low = 0,
. S1 i6 G- @7 ~: H+ y, C                .gpio = DA850_USER_LED0,8 t0 g) x# a8 A' }+ |
                .name = "user_led0",
( p& e+ q# D6 R* Z' L9 M                .default_trigger = "default-on",
& r4 f" Y7 c" b% e  x, y; E        },
2 C  o  F- J/ R- S. f4 S+ Y+ Q        {
+ F! U, e; _% d2 q; R6 P                .active_low = 0,8 M& [1 ?4 L4 n1 O+ o# s
                .gpio = DA850_USER_LED1,
! J: z0 [: ?- N/ N                .name = "user_led1",
, m8 `1 w2 s4 E                .default_trigger = "default-on",1 m3 `% L, r- v/ R- D5 A7 C
        },, K; g6 Q5 ?9 F0 p; {& J
        {
$ M9 p4 S/ r6 x                .active_low = 0,
5 x7 Y" I/ J, |# E! r+ W( o  T                .gpio = DA850_USER_LED2,
; z" E( ]  b  F! A+ a. q' I- G                .name = "user_led2",% k- u" e$ C( X1 p' N- P
                .default_trigger = "default-on",
% ?; I# Q/ u" |- g        },
8 ^9 K% x! w3 K# F6 }        {
/ H# q+ h/ F% @! t( l                .active_low = 0,
: Q5 g* t( ~: i) l5 N; d" `                .gpio = DA850_USER_LED3,
& f4 L# e2 ^! V$ G4 ^                .name = "user_led3",
3 n: R' i( f. e/ t( F+ W1 |                .default_trigger = "default-on",
* s8 e. f' F9 k# `2 [        },9 Z2 d2 H2 m$ ^; r
};
$ q( E: P0 d& G2 t
/ u; }: W. K+ n- Gstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {0 a- u# w" G1 J+ Z# d4 i6 [
        .leds = da850_evm_tl_leds,
' A- i. P$ u6 \7 w        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
* H. O* O' `: S5 w/ o};1 @, p* R2 e: M" Q
2 B; ?5 G0 r" _- A1 Y
static void led_dev_release(struct device *dev)
$ s1 T, V! D9 I3 D: ]* ?! h{
- n- y; u6 P0 d$ D# ]; L  E4 [};
$ w1 ]& G* j' c; S4 B3 M0 k
1 |" B! j  u! q1 C$ qstatic struct platform_device da850_evm_tl_leds_device = {3 ~3 O* d, g/ A, F( g- @  c
        .name                = "leds-gpio",9 R( c6 f" X) B; X& ~  [0 ^: c4 R4 M" `
        .id                = 1,3 ~* h4 X+ H( k1 a
        .dev = {- N$ {; l, v; s& @% e& F! t
                .platform_data = &da850_evm_tl_leds_pdata,
  n2 F- S' z4 w' |0 |- {                .release = led_dev_release,
2 y! |5 D  ]! p. M8 f        }7 b$ q- m! a+ m. c
};: h( _' e$ b- c- c6 k/ S' g1 D
3 S$ Y8 v  V$ Z1 B, Q: e
static int __init led_platform_init(void)
4 _4 u% f3 z$ `. n{2 T0 x4 C8 T, l# F; P$ g% W) W
        int ret;* G2 A- Q" ^0 I+ i, [8 V
#if 03 t/ ^4 G# I+ {/ v2 K9 C- ?
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
. D5 c# D* @4 V! U        if (ret)
' r/ ?( w. u3 q, y                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
9 Q" g* M* G/ J, x                                "%d\n", ret);1 q$ h5 [+ H( r5 l" M/ d4 w  x. n
#endif! U# `5 [6 d; d3 l+ {
        ret = platform_device_register(&da850_evm_tl_leds_device);7 I1 C- T- k+ D" i3 }
        if (ret)! {0 I1 k( @2 `+ N
                pr_warning("Could not register som GPIO expander LEDS");
# o: H1 W* Y8 F2 `7 |' p        else
, S" c( G# N6 P# v+ z2 H" d                printk(KERN_INFO "LED register sucessful!\n");
7 `' z7 N# H; M( [
7 s6 r  n6 I  n$ {/ Q        return ret;
7 v& c5 j% P$ y- q4 M6 W) f) I( Z" m}( n8 C1 L' i$ }) Y

4 Y' b4 q- i* X, f' W- U# [, Istatic void __exit led_platform_exit(void)
0 @( O5 ^  g! Q$ p" W/ r! [  @{
/ R" ?. X( T* V        platform_device_unregister(&da850_evm_tl_leds_device);
% h: |2 F/ A7 Y- }: c  D0 M
" `; E5 {3 v7 b5 h& V3 B        printk(KERN_INFO "LED unregister!\n");
' Z% U+ x) ^% O# V2 D# Y}, t4 x6 T/ _7 R- @! j- B
4 A( _# B  E/ [/ ?3 W# D
module_init(led_platform_init);' E( ^' ~- J5 Z0 [5 p5 C
module_exit(led_platform_exit);
: {- d  O1 W1 k, i; S
$ z4 g3 e) H. _MODULE_DESCRIPTION("Led platform driver");' G6 Q2 C$ E. P! a% w$ }
MODULE_AUTHOR("Tronlong");
9 [7 A" \0 k8 A5 z2 Q8 Z. yMODULE_LICENSE("GPL");
' t1 T8 `6 }) G6 @- X: x: P, X  Q5 ~6 G7 R5 q4 d! t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-23 18:11 , Processed in 0.059503 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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