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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。& M. f) @) A& X5 h2 W& w: O, K
#include <linux/init.h>! r$ ]- y8 {' }
#include <linux/module.h>, R8 R6 i1 O. Z3 |3 N7 c+ N
#include <linux/kernel.h>
* C3 F  e, J  W+ y- @! r#include <linux/types.h>+ m- Z/ h5 ]2 x
#include <linux/gpio.h>4 g( S+ u( H: y. w! M# \
#include <linux/leds.h>
6 {7 V# M1 {9 W, f- D; Y7 c#include <linux/platform_device.h>$ |7 t* ~# p% M

! q& T' j$ x/ ?- a/ r$ _6 W  W#include <asm/mach-types.h>
+ \6 o  O! [, S( f# ]#include <asm/mach/arch.h>
5 O+ k: s) Q0 ?#include <mach/da8xx.h>
, W' |" @" b2 ~% n#include <mach/mux.h>
+ m: r0 U0 u4 \* f3 B& v1 X8 l3 K
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)% U' o# B+ C1 G4 j! h! D( y
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
& o- N8 U8 [' v$ M9 c6 ?#define DA850_USER_LED2        GPIO_TO_PIN(0, 1), \9 ~8 U7 P9 d- E& |. s, @, U
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
7 A, N! m& ~2 [; {$ X( ^
$ t  V1 @" D6 T, ^, Z; a2 n- k9 n/* assign the tl som board LED-GPIOs*/
( X) {6 _1 M5 p2 M) e! F( e7 e# Rstatic const short da850_evm_tl_user_led_pins[] = {+ v2 F- [  w/ [3 T) J0 q* C3 K1 ?
        /* These pins are definition at <mach/mux.h> file */: Q4 _4 w* h) P. ]" O
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
7 T" Q* A( w( H; M2 @" l( @# M        -1
9 X" @# W7 Z% h& d, j9 G};
! \. z5 [, i7 v5 d4 D1 p" A1 _; o9 ~* Q. T4 E# ?4 i1 [8 _% g& D- o
static struct gpio_led da850_evm_tl_leds[] = {
, Z" @6 ^; d( y2 P' {        {
3 u- n2 |: d8 i) E( Z2 H                .active_low = 0,- H2 E  Q/ w0 K) q- [
                .gpio = DA850_USER_LED0,
- ^2 O; U4 U7 z                .name = "user_led0",
6 l# M* o3 y, Q* A) |1 o                .default_trigger = "default-on",
. l- t. Y. j& Z, Z        },
7 y8 G# N( h. p2 o' ]0 l        {
' d9 P: }; n/ F& h6 I                .active_low = 0,
% |! Y8 ~9 \; I, J                .gpio = DA850_USER_LED1,& Q4 n6 C$ M0 [6 \. ?- c1 P) W
                .name = "user_led1",
- T6 u* c( g  ^                .default_trigger = "default-on",( a% o6 w5 g% E  R* v
        },5 a8 S6 M! C% ~3 F9 q( X
        {# i  v& |9 a4 e0 i. Q
                .active_low = 0,3 A1 C- w$ d; T2 O9 L% z' e9 c
                .gpio = DA850_USER_LED2,
2 u& D9 h: d+ @1 I8 D; ]$ k                .name = "user_led2",5 P, q; f. n: S2 [" ^; L
                .default_trigger = "default-on",2 I& C6 D# n; g
        },$ I( u& F* z8 r
        {
  d' R) D1 I' g                .active_low = 0,) N. T$ z$ D" Q( Q# J5 O3 w
                .gpio = DA850_USER_LED3,
7 i; d" S! g8 T( d" Z5 B# a/ ?3 D                .name = "user_led3",
) J3 D9 T( }) [! \                .default_trigger = "default-on",2 N1 M$ l( P4 h7 Y  u" b, J' e1 B
        },
6 v' ~0 {/ A5 L* }, `8 t};/ W' A2 D8 ?6 n/ S- o3 n" v4 c3 L/ {7 C

' @, }. x4 Y% U( @$ U3 istatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
: ]$ }6 O. a3 q/ ~7 j" u9 ~        .leds = da850_evm_tl_leds,/ v* m. h* I0 q/ \; X/ |
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
# {3 ?# a: v2 W! n};
+ I0 \% G/ y0 Z: m5 i/ S0 }/ a! m/ O' {2 E7 c4 Q2 {* m
static void led_dev_release(struct device *dev)% K+ l& z( G$ q0 N9 ~' R+ k
{3 l" v2 O* k3 b$ x/ ^+ W: {
};
' a/ `! z4 Q, a% }* }
8 u6 e" y# W; lstatic struct platform_device da850_evm_tl_leds_device = {
- `# l7 |. C7 P* X/ }# ~        .name                = "leds-gpio",6 C; Z0 l! U8 k' k. c0 s4 }- m
        .id                = 1,
; Q* g" Z0 M- B5 Y1 i        .dev = {
. T8 Z& C4 G& Z                .platform_data = &da850_evm_tl_leds_pdata,
0 S, d; A9 q+ h; a1 t                .release = led_dev_release,
0 F2 c0 s  ?% g# P3 i: X5 {' g. J        }4 S8 {& z% U) s
};1 a' N5 R' p! d! f! [2 J$ e
0 C: ?9 E2 f! Z
static int __init led_platform_init(void)
' y9 K  C4 c. Q5 L$ M{
7 ~/ N, y+ C+ z3 x8 N; r        int ret;6 B8 y" M9 |7 h) n& l/ C! l
#if 0/ R3 ]  U2 Z% [; c6 T2 u
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);- ^$ ?4 q; |& L% t& X
        if (ret)5 F6 v/ e% M' [5 e& y# U2 G; E# \
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
6 L2 E+ x4 D3 x" D                                "%d\n", ret);8 `2 z2 r8 F) o6 F- Q
#endif5 b& J- p" f' p% P( F5 U& r
        ret = platform_device_register(&da850_evm_tl_leds_device);  d3 I: T- P8 J9 R
        if (ret)
  A# q: A. F8 B: `/ O1 O                pr_warning("Could not register som GPIO expander LEDS");$ m! O1 Q4 t- V( }+ i  f
        else: u) U, u; s) {9 n' ]3 }
                printk(KERN_INFO "LED register sucessful!\n");6 Q0 v4 M  l/ `  _' V

* B5 b2 g4 f0 l9 P        return ret;
  ?; n3 S* K6 d& o}
5 m; [# d+ d: x8 t' Z; O- ~
6 G5 v! B! B+ h' w" Istatic void __exit led_platform_exit(void)/ o$ R. q3 X9 b) x/ t/ |+ f1 S
{
7 _; Y9 Q8 p: J2 `. @        platform_device_unregister(&da850_evm_tl_leds_device);
/ C  g8 {0 k, i+ c; A+ k% D, E2 s- X$ d  X5 m, T5 o& d" ]
        printk(KERN_INFO "LED unregister!\n");% S* A3 o. z) @( U& p" s; u& D6 E
}! m4 l. u  E+ [

. B7 J- D! A7 A* v/ gmodule_init(led_platform_init);* a# V, s" q: a9 l2 |7 y
module_exit(led_platform_exit);+ q0 X( E: u2 v# D

0 s) T* [3 @6 W0 x1 U, kMODULE_DESCRIPTION("Led platform driver");+ s% x* G; K' F9 a& X* R  r1 X, d2 w
MODULE_AUTHOR("Tronlong");5 C3 n, K3 h* D. e. W
MODULE_LICENSE("GPL");
8 }& t$ @8 D0 \  S  A0 F2 ~$ D# n0 q( @; K/ M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 02:03 , Processed in 0.057690 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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