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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。' Q# f1 E( X" g$ |2 r: g* y
#include <linux/init.h>: T2 n6 v; R# ?/ W4 v' A
#include <linux/module.h>: T& G6 o; f% ^- G% g; ~) K
#include <linux/kernel.h>7 ?1 c$ W6 K) H, w7 J9 ~" K
#include <linux/types.h>/ b+ N* {6 x  Q0 E  [4 M
#include <linux/gpio.h>& g1 z& o2 G% r. T# x, T/ v
#include <linux/leds.h>
  D, z5 H8 a0 h% E: k8 ^5 \#include <linux/platform_device.h>/ m- }  s8 x1 p( x- S

+ @# q; O2 ~; ]#include <asm/mach-types.h>2 B3 h& B7 o4 W3 ]& ?0 @" e2 P7 m
#include <asm/mach/arch.h>) j" C0 X# n/ v0 m. s9 r
#include <mach/da8xx.h>3 H4 }/ Q. F3 A. Y  \* M
#include <mach/mux.h>
! _$ p6 K5 L6 r' J) D% E+ ^: s; A
9 `) ]. s7 d  n7 a* N4 v#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)- z' `# E0 v" {7 w$ Q4 e$ l
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
& j' J& F) R: i8 i0 a' m. k#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
: a! {: i4 z) q; w9 |# y: T#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
2 ]+ K; A2 F* ]9 E& R9 P
4 n0 z# f3 Z& M  h, z3 v/* assign the tl som board LED-GPIOs*/
+ |% [9 \0 {0 H+ N, Fstatic const short da850_evm_tl_user_led_pins[] = {
; N" j3 L$ u, ^2 v9 y2 }- N# Y, q        /* These pins are definition at <mach/mux.h> file */8 ^5 Y" C* C7 t# A; t( J
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
: `* y5 U9 i% `# k        -1
4 k; s1 n/ y* b  F1 n, w/ G; c};7 w! Q% w! W5 W: H$ U$ ~

3 Y: S# t( `" W$ {1 k/ c/ Tstatic struct gpio_led da850_evm_tl_leds[] = {6 Z" z3 z$ ~& J$ h- Z. o
        {) q* G; U% w5 G' ?5 a) Y
                .active_low = 0,1 M0 Q) V& c# @% U) m! C
                .gpio = DA850_USER_LED0,
/ H, b5 v  l, U, r                .name = "user_led0",
6 ^8 E" v- R9 v                .default_trigger = "default-on",
2 U& q8 |+ }; O' S( }3 s' O% t        },, r- Q& T  \9 O& P0 Q; X* S
        {" u9 r: {% B& L# f% m
                .active_low = 0," F% d& i& n: ?+ ~+ J
                .gpio = DA850_USER_LED1,
3 p3 N0 D7 e2 u8 B                .name = "user_led1",6 d# \/ K, O4 E0 V, b) |7 }, i
                .default_trigger = "default-on",  t* S, q4 d, D* a
        },1 r2 A) {3 [( U" v( \0 Z9 R
        {
+ p! T* ?$ `8 b7 A3 g3 t  e' ~                .active_low = 0,8 v, y- p! d( I) i
                .gpio = DA850_USER_LED2,1 b8 z( i# ?0 p  n) i
                .name = "user_led2",
$ m3 ?7 X. x& N8 z& t                .default_trigger = "default-on",
) c0 j$ x; w: e) d+ R* `        },
  I1 n% ?5 J8 k2 t) l: J% o$ v! x        {
( W3 i; F0 `. W, v% A+ j- Y, s                .active_low = 0,
9 J% l0 ]. J; B9 i& Y" S5 F, b5 `                .gpio = DA850_USER_LED3,
" z1 Z: ^, O* t5 H% N: u9 A                .name = "user_led3",
0 f5 A- w  _7 O                .default_trigger = "default-on",: y' E5 y* A  L9 d$ M! |
        },
5 z* w6 J# Q; _+ w' d- F7 v" g};
8 r9 n# z+ ]* z9 w
9 K& z5 ?9 W- H9 \; dstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {4 _6 n' h  C6 \$ J) N5 j9 O8 ^+ T
        .leds = da850_evm_tl_leds,
# r: m7 R0 [5 x" T  `) I: |) r        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),6 R( Q! }$ k: \1 z9 z
};
' {% q4 R7 P0 U$ s+ X: Z( k% g2 H( }8 A3 J5 p2 e6 T% ^
static void led_dev_release(struct device *dev)0 |& G( d6 `" J$ m: \7 }3 P3 _( Z
{2 i4 ~# M4 a$ E# D2 W0 i
};
" a  }( L. j  v
, a  B& O3 Y3 u) O' }static struct platform_device da850_evm_tl_leds_device = {' s6 e7 R0 F  Y6 }0 P
        .name                = "leds-gpio",: l/ T- Y5 |! d' T/ |
        .id                = 1,: Z: g9 X% F" e3 N% D) n
        .dev = {
# y8 {6 Y8 |1 W4 f+ O4 [                .platform_data = &da850_evm_tl_leds_pdata,1 V. N* L/ I% B4 v( Z' w
                .release = led_dev_release,, x- E5 w& j% h5 ?# `
        }
9 S8 \/ O8 Z+ P& I8 Y: b  X1 Z; @};. r; i+ H# J4 s
2 y5 y! m( V; Z# h8 b
static int __init led_platform_init(void)* q; o2 O7 D1 h, |8 }) {6 b! R, O1 V
{
  u; O& m& R8 Q* i* l  Q5 b* Y, m& @; w        int ret;" C2 ]4 w5 [' O  j! u
#if 07 k3 ]# A/ |0 {( f" p; ?6 k6 F
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);  d& Z8 g. i, h+ s- y
        if (ret)
6 ^& ?7 F# b( W# _; Y: K                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"5 a4 B, F8 K7 q7 q
                                "%d\n", ret);
. w: G4 M$ S& I6 x#endif
% C. v! p2 J# w$ k" i        ret = platform_device_register(&da850_evm_tl_leds_device);
1 P( g. R. w6 U( R2 A, r+ v        if (ret)' e, Y# x' e( E% Y/ S7 |' k( a
                pr_warning("Could not register som GPIO expander LEDS");, W' K  y4 T/ R3 @' \, E
        else
. @; T5 H6 E3 e  y                printk(KERN_INFO "LED register sucessful!\n");1 p2 K- J( X! I6 c  K) u1 v

( x4 k& @- Z) v        return ret;
- x; a& }& q! t3 A+ J2 j* D}9 l) f6 G5 Y7 d( r2 o2 i

& K; ?' e3 C+ b3 ustatic void __exit led_platform_exit(void)
# N2 I- T: ~$ M; s  }{
' Q6 w& W; {5 J. `- L5 r" m$ ]7 y9 L        platform_device_unregister(&da850_evm_tl_leds_device);7 @3 r& z! }- v2 S# s) V* m' R5 j% I

' D8 w1 I% z" p+ Q% J8 t: H        printk(KERN_INFO "LED unregister!\n");: D! X) z. ~& H7 `/ T) B) Z5 V
}
7 }" h7 m4 {/ Q( s5 t
5 r$ t  V% a& \# C- X% q; Xmodule_init(led_platform_init);9 p9 s3 E5 B: m
module_exit(led_platform_exit);
& `6 Z5 c0 G" l1 c+ r! s1 W5 B: {. P/ z/ V" `  a7 G7 J5 ]
MODULE_DESCRIPTION("Led platform driver");6 v4 S5 \  A! ~- `( M1 C
MODULE_AUTHOR("Tronlong");
3 E3 d  H8 s$ U: NMODULE_LICENSE("GPL");0 N* L* Q% N9 D0 ~4 O& S

. C# v3 q* ]) f' Q) T% y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-18 14:29 , Processed in 0.039625 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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