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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
/ ?; L1 ?5 @: ]2 C! |5 e( q#include <linux/init.h>% c5 W1 e: E' I1 F+ W
#include <linux/module.h>4 }& x% A: y' w9 W  X$ _, R
#include <linux/kernel.h>& C+ y: Q/ n/ Z. J/ J. v. v
#include <linux/types.h>
, a" L! F6 h5 Y6 [, |! }3 ]#include <linux/gpio.h>
  f  x7 y" J5 p- I7 p+ l0 M8 k1 I#include <linux/leds.h>8 [. Q' K# M/ W- X/ M( i* C
#include <linux/platform_device.h>
: ?: V8 J& e4 `0 U! ?+ I
- }9 a/ W1 ]2 h1 f( S' @: }#include <asm/mach-types.h>
: b1 c* L2 a! k1 x#include <asm/mach/arch.h>: o1 v- ]; f4 u* s; z
#include <mach/da8xx.h>) I& V- V4 ?2 h% O/ \3 O6 V
#include <mach/mux.h>  ?0 t, R. v+ }2 H: {' g# o

7 h0 e( q( K- }$ k#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)$ I% Q0 m. S' L0 E5 w0 H. ~; F- H
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
8 O" {  _/ ~0 |( D7 d#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)1 ?" u9 |: ^3 i1 {& k
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 G" M% C4 U: ?0 {! L% l' ?

9 F4 ~7 C/ D# x: c4 i+ O, U/* assign the tl som board LED-GPIOs*/& ~/ i% x7 S/ G( U
static const short da850_evm_tl_user_led_pins[] = {# l9 U, V( B* A% v
        /* These pins are definition at <mach/mux.h> file */
  A! I( c, p, c7 L( }        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
3 `7 Q8 Q7 l' J  Y2 J, m        -1  E% `& E/ z$ R1 a6 V
};
0 E/ o7 w4 S# g( M4 m$ s, L, m, J3 r3 R( `, Q) T
static struct gpio_led da850_evm_tl_leds[] = {
" Q- s; e, T2 ?3 \" L- A        {
# q; e: e9 ]$ `                .active_low = 0,
; L4 K. q1 L2 t& c7 n9 y& q; d                .gpio = DA850_USER_LED0,% E; B( I% t# z5 ~
                .name = "user_led0",9 j/ a1 w$ p6 [+ T; }7 l
                .default_trigger = "default-on",+ s1 C: }& U4 T( G5 U8 I+ K
        },; M/ U2 k. ]. J( J
        {
. q7 A# x6 _& D; V/ J                .active_low = 0,7 q( W! @: w  G; i
                .gpio = DA850_USER_LED1,
$ \1 Q" c- }5 G7 X1 `$ J4 `6 [+ L                .name = "user_led1",1 ~! N7 K# G" {& l
                .default_trigger = "default-on",
8 {, T8 d1 q$ B$ G        },
& [& T! V4 a: }  U        {
" J7 m5 O. ?. D" u8 a                .active_low = 0,
# x: j, U/ @* t6 M, _( e; @+ ^' B9 [                .gpio = DA850_USER_LED2,
7 l( w9 k  T# o; s8 W                .name = "user_led2",4 y* x% X  m$ I& B# ]6 R# Q
                .default_trigger = "default-on",
3 I# a; w9 N. t& p        },
; \* y( I5 X2 f5 \) t        {
: M5 r' K0 O6 E: `7 `* S8 n, [7 O; K0 @                .active_low = 0,
1 @9 u( ^8 u! I+ v                .gpio = DA850_USER_LED3,
, O! z" _: j4 {; g/ i                .name = "user_led3",
0 b: o& p3 a5 D3 k' d+ @( j                .default_trigger = "default-on",
$ Y, j2 X+ S+ D/ n5 H        },
" S' a; c, m8 m) r; B};  e( P, ?( V' H# V8 l' `
. ]5 L4 E. m$ _: _" U/ Y) q
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
% u+ e9 w+ W- W" T- [9 Z' }6 q6 Z        .leds = da850_evm_tl_leds,
/ z: Q8 ?- P3 m8 @        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),, N/ O5 O; ^8 F6 W" J  _6 A3 h) b5 r
};
: E8 g3 ]! p; C5 p( u" d7 _; v7 P2 f8 V5 z
static void led_dev_release(struct device *dev)" H& Z7 w9 b% ^" B
{
& r3 w) m1 O/ \8 [  A+ _7 K9 V};9 q- ]/ j, [  i: \, |. r$ T7 `
$ J) }: o& x( K+ ]6 i- @4 q
static struct platform_device da850_evm_tl_leds_device = {7 k9 P1 b" J4 ^! F. O$ O# h9 N
        .name                = "leds-gpio",7 i0 k2 @& `/ X4 `
        .id                = 1,8 g0 x) Z0 ]+ Q5 i4 T: y
        .dev = {
* F2 @$ \. ?. d( ], ]8 K5 s+ ]# L                .platform_data = &da850_evm_tl_leds_pdata,
* ]( i( W7 p/ D2 F3 @4 m                .release = led_dev_release,
9 ]' q1 B  J' E) W* n9 Y% r        }
  a' N0 y; x3 i% m, {+ k  R& Y};7 \, J% W- R" S

0 x. Q, t' D! J. h1 v4 mstatic int __init led_platform_init(void)/ ?8 R. p- j% e# u: |! F. j  ^
{
3 u4 _0 }. b) h. O        int ret;  k# S( I! b3 y+ s; H
#if 0+ R* m2 @) a( i4 i! e8 F8 \- _
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
  I* c( j% o3 u9 n- ]        if (ret)" L" g/ X( }4 b8 N; T9 n, z3 }' L6 n- I
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"! M5 n2 `+ u3 L" G( @" V$ l
                                "%d\n", ret);
5 b! _% `) y7 V9 k/ F& ^8 J#endif. `3 p9 |# J* Q% `
        ret = platform_device_register(&da850_evm_tl_leds_device);) D7 f! w" b& j3 I& }* N. B6 \! `
        if (ret)3 U8 p0 A! E( M5 y* Y  q) D  S
                pr_warning("Could not register som GPIO expander LEDS");6 ]1 G1 a% E  i. v1 Z$ T! \8 D" |
        else3 j, q& |, `1 _1 a
                printk(KERN_INFO "LED register sucessful!\n");6 h; @% H8 e% a
3 y, r4 q' _, m
        return ret;
1 G4 W/ t" [5 I/ l$ |}
2 b; z9 Y7 U3 u+ @. {5 s  w0 X6 o. E- w' z
static void __exit led_platform_exit(void)! U: h+ l# O6 ]0 }. N  K  `4 N
{
* A3 F; a1 L: e8 T5 ?: [        platform_device_unregister(&da850_evm_tl_leds_device);
5 m2 e  j' m0 \. K  m/ N( k
& V7 g7 v/ x0 I7 |% q* X9 v        printk(KERN_INFO "LED unregister!\n");& C. k3 ^+ c5 O7 m; D9 S
}
# ]4 d$ B8 W' R* X( C5 u! a8 x6 R5 c2 n6 |
module_init(led_platform_init);& C9 q6 d6 z# ]  {. N! k
module_exit(led_platform_exit);! W6 F$ m& L' [/ v! i! U

5 @' R4 K0 a$ O  a. h( R/ |7 BMODULE_DESCRIPTION("Led platform driver");
; p; J7 v6 C8 |% zMODULE_AUTHOR("Tronlong");
! ?, H3 v% p  w& g& w& BMODULE_LICENSE("GPL");0 G6 M' A6 K1 V& e; ^7 Q; ]

1 r" q' Y% R, u8 P% |% \7 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 01:18 , Processed in 0.042072 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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