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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
# @( ?4 h% m* O; l. s5 o3 Q#include <linux/init.h>
* I4 f% G2 ?$ d3 S#include <linux/module.h>
9 o/ v9 Q* ~$ [9 T#include <linux/kernel.h>6 D& I: c% o* U: i" N) j; w
#include <linux/types.h>
8 B, W- k) M# W# `+ I#include <linux/gpio.h>$ m0 w5 D* o6 k; z  h7 c% x
#include <linux/leds.h>
) E  B& n" b  M4 w5 `#include <linux/platform_device.h>& f( \5 B) L- r7 M1 e
$ ~) v) R& V& U+ L8 g. q/ I: R
#include <asm/mach-types.h>3 D+ h( w/ G9 T' r0 g9 E! E
#include <asm/mach/arch.h>+ r0 _0 A- w; z8 f# O* `' z! ~
#include <mach/da8xx.h>* e8 |; _: n7 w0 \# I( y
#include <mach/mux.h>
3 m! {% [% q& h0 \9 \( F% x+ n/ ?/ l' a
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
% I+ p4 r: S& [& q8 P) w; }( \#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
  t# W' m- a% l' H( s" A#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)$ p% |+ ~6 C# A) x2 M* z
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)+ z, x6 G& V  K% X/ w5 ~3 Z( D, V

( k  [  U  A2 r8 l/ ^/* assign the tl som board LED-GPIOs*/" {7 `2 b: y# A' m' l
static const short da850_evm_tl_user_led_pins[] = {& {( M, b2 f3 w" ?' X* J- F
        /* These pins are definition at <mach/mux.h> file */9 e) ~( ~) I$ ^" D
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
" {5 j' f( Q; I        -1
, P/ Z; `3 m( D2 a/ Z};) Q0 l2 N3 \% b7 z+ v4 j

2 v' R, P! c$ P7 [+ O3 |static struct gpio_led da850_evm_tl_leds[] = {# W% H0 t+ Q0 z" D3 b2 P
        {, t. H! o# V/ `9 [% `8 L7 ~# B, f3 C
                .active_low = 0,
! L) Y, _) P6 x: U/ }2 V9 z                .gpio = DA850_USER_LED0,
& _$ B9 o1 b& f" L  b& l+ D                .name = "user_led0",
9 \) d$ ^$ O. `3 ]                .default_trigger = "default-on",
% {" s. C' T5 Y" d. I        },. D) F" u% \4 ?! Z( }
        {: n' U" j; j7 f, P; I, _
                .active_low = 0,6 _& E/ _1 @+ P3 u8 x
                .gpio = DA850_USER_LED1,  D7 S$ `0 B& U  L) B
                .name = "user_led1",4 I. W7 F3 y5 |. F. B
                .default_trigger = "default-on",
8 k5 L" N0 \( f  j4 K- A$ Q3 s        },+ c4 w. ^8 l: Q$ t+ r- Z
        {
$ B7 l4 |; K- Z" Q# s                .active_low = 0,
& ]% ^- S9 C7 |/ y( w3 M6 ?                .gpio = DA850_USER_LED2,# Q7 Y8 Y/ D' p/ B7 A
                .name = "user_led2",
- n$ q2 X! [; t* u1 N8 t2 u                .default_trigger = "default-on",; ?. K* N" M- k: t7 o
        },; }7 P8 B( v& W% `
        {; R/ z! A6 l8 a
                .active_low = 0,
  N9 \% L; r# X8 S7 A7 b                .gpio = DA850_USER_LED3,
' d6 z7 F3 e# \# ~6 ]1 ^0 P- D                .name = "user_led3",
+ U  [. }+ j" _& _( I$ n, f' P                .default_trigger = "default-on",
( C/ s9 K7 O  t- L        },8 A8 ?' T- }  `. G
};
% k% D1 F( _  s' ?- G5 [# N1 Y4 X+ K: K
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {( i$ f, t1 p* `( W6 G& C
        .leds = da850_evm_tl_leds,
: d2 _0 z; @# |9 ^4 ]        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),7 I+ L) ?. z# [* c: e8 @
};
8 f  o! A6 V% ^! O8 v/ I- B/ q0 q( p
static void led_dev_release(struct device *dev)
, ]. k% d8 Q# i+ t  ^/ l' b& ~{# v% M4 Y7 S$ c3 l7 I
};
8 V/ U! k! [+ M  w# R1 J: x( a. ^7 j- K! t2 x" O% c# _
static struct platform_device da850_evm_tl_leds_device = {5 K* e: L8 D4 Z2 h: {2 c
        .name                = "leds-gpio",. `. O* y8 ^+ a: x' a! A4 t+ x* Z( J" j
        .id                = 1,
7 m) ^- l& R1 t! c( S: N        .dev = {
0 O% j4 z  F2 D. W6 g* G; Y                .platform_data = &da850_evm_tl_leds_pdata,) R2 G% o7 r( w3 ?
                .release = led_dev_release,
, I3 c0 R+ ~7 F2 _        }1 r" }6 B4 n" X8 B
};
8 d$ {8 [3 o, ?( o
! l  a0 m, x- I; p  hstatic int __init led_platform_init(void)
, W( O8 }' `) i% ~# o{
) F( H: j8 G2 t9 u5 l- C4 }        int ret;- W) N' _+ h  S  h0 F  y- E
#if 05 _! H) `- _% U. J) h; T) v  X+ W5 s  J
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
9 i8 H, S3 J# ~( Y        if (ret). Z1 J4 ?% `( R6 o' [
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"- t" D, C. A; q& n6 \
                                "%d\n", ret);3 z/ K3 G. c! E2 \9 x8 ]# O8 m2 D
#endif7 E  `+ h* a  e
        ret = platform_device_register(&da850_evm_tl_leds_device);0 e( ~/ ?' U8 ~9 ^
        if (ret)
  ]0 Z' B. h8 J) W7 C+ g2 g! Q                pr_warning("Could not register som GPIO expander LEDS");
5 U( E9 z0 }" W0 O4 y( a        else
. N8 S( B. J8 Z( K! x4 ]  O" [                printk(KERN_INFO "LED register sucessful!\n");
3 d8 t' \0 J* N( B- K5 u
) O' P0 p' w: c        return ret;
6 P' E" b5 o& j3 M+ `4 A) ?& `}
0 u! l7 G, U, y3 \" V- W+ j+ M% h- n
static void __exit led_platform_exit(void)
5 g7 h: ]+ {9 j# a9 H: T5 h{- E2 ^6 H- Z9 M) _
        platform_device_unregister(&da850_evm_tl_leds_device);6 g, O6 p9 y- T: d- d- f) K) |

& T) @! j# ]" p1 Q) v/ D6 R        printk(KERN_INFO "LED unregister!\n");
: U' b. k- Y: N4 x  {* o/ l& s}/ M0 }. z8 R% h/ Q, z
# W7 @% r; ~! R0 ?, x, e# v
module_init(led_platform_init);
! v2 ^6 M! D1 d% W! |, P9 k" O2 kmodule_exit(led_platform_exit);" z0 Y9 c3 f6 ]% i3 ~  y/ @5 @

3 k1 {/ h# F. I) c9 T7 {MODULE_DESCRIPTION("Led platform driver");! ?: a  u/ h9 v
MODULE_AUTHOR("Tronlong");
- T+ q% L! b+ `MODULE_LICENSE("GPL");! L8 t* O/ N# B$ j0 {, j

$ ^3 c( a# b& O  G% i( y; d! Z6 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 10:56 , Processed in 0.038388 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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