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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
) s. n3 Q" {( Y6 K& |( o#include <linux/init.h>
% P- m  |9 X6 F+ e7 P2 f#include <linux/module.h># i& p% C% @4 Y* c3 O" x% D
#include <linux/kernel.h>
' n, C0 z- Q/ G* }#include <linux/types.h>4 ~5 U" e% C& N4 M/ @& Z0 L# s
#include <linux/gpio.h>
; e' z' K7 N0 v; Q% J' h2 O- D( X#include <linux/leds.h>( m  }' z, ]& f8 h0 Q1 H
#include <linux/platform_device.h>% l: ]* T& t5 ^) H

$ ^* }: {8 Q5 Q6 k3 v; y* n#include <asm/mach-types.h>8 V  ?' {3 g: F8 ~' Q% e: d( T
#include <asm/mach/arch.h>7 ^" G) Z& J: O  e3 z
#include <mach/da8xx.h>
$ k% t5 Y4 j$ c7 t3 J#include <mach/mux.h>
& n% g0 |: T) G$ m' {
- ^( O/ f* f$ w' {6 P  s#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)6 d' @  i9 c0 B, t/ w6 z# b
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
! q3 w( `. R) ^#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)! |; {0 }; G& q/ a" B9 s
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)5 Q! c0 a! F9 ]0 ?
* K( J& G! e3 \; a
/* assign the tl som board LED-GPIOs*/. a! B: \- F0 A
static const short da850_evm_tl_user_led_pins[] = {
* \3 [  c- Q( M* {# e+ J4 W        /* These pins are definition at <mach/mux.h> file */+ V& h7 o9 {- n9 _, s, J, w# ]( I* W
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,/ m" b3 r% X8 B+ e
        -1% `6 [$ I/ ]. c' G' K8 W
};
! P8 `2 ^+ a# I5 |; b3 n7 Y( N; r
6 @* M6 G" r' w( K" t  b8 T$ xstatic struct gpio_led da850_evm_tl_leds[] = {# u8 [! y" R+ b* O( O
        {
: Z( a8 G2 X" s- F  {                .active_low = 0,# D$ P. E. [* f9 V1 ]  g
                .gpio = DA850_USER_LED0,
! W6 C6 `- H0 q- T0 T* R* G                .name = "user_led0",7 G9 z' I& h6 Q5 b
                .default_trigger = "default-on",) B1 A( l# p/ S& ^, C. N
        },
$ n% ?6 X+ G8 r) ^. D1 w        {8 s+ M' M* Y: _3 g4 F& x3 G
                .active_low = 0,
& b* ?* D9 |% Y/ e; ?4 M                .gpio = DA850_USER_LED1,) t* \# m+ Q/ p, j0 I% T. M
                .name = "user_led1",
9 w. K" Z& j; X. N! @4 ?* F                .default_trigger = "default-on",
$ }6 S9 r9 C" \% N3 t        },# m  P& n  a4 n+ H3 i( P' x8 y
        {
4 T& }4 y1 y# t, g5 P7 D0 S$ u6 s                .active_low = 0,
* D5 M3 d  ?0 t1 z3 q  v                .gpio = DA850_USER_LED2,) L! A+ }9 j# p6 m$ i9 q9 ?8 M
                .name = "user_led2",
% f" ]+ ^! z  u' p. M( e                .default_trigger = "default-on",4 _$ Q, s# K2 T, j
        },# u1 W% q* Z9 Q8 K
        {
" m0 B1 z2 G- R. P3 T& F9 [+ n                .active_low = 0," E3 g" C1 j3 T, H& `& f) X
                .gpio = DA850_USER_LED3,' o( T% F, T. H% p
                .name = "user_led3",
  g  y; |( A7 B- V+ W                .default_trigger = "default-on",
0 M) V- P+ w0 k3 k) W2 g% O        },
  r- L  d9 `1 d8 Q" l};
2 q$ F4 ]2 z# i
" h) p" e# x$ S; Fstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
- [' G1 ]8 z: G! F        .leds = da850_evm_tl_leds,
& e$ Z. s: W2 o6 v* }; u" j$ |        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),6 ^) @& y; X) q8 D# Q6 h
};5 u( |- I8 L9 \, n/ q

" a* d! d& V& l' y5 }2 {static void led_dev_release(struct device *dev)7 s- `! l, v2 m3 v3 X& F
{
2 b5 B; V- W% [/ c) c) U" _};
9 l7 S" h& {8 h1 b0 M
/ g0 \8 F, @/ A: Q1 ~static struct platform_device da850_evm_tl_leds_device = {8 x, S$ Q# T0 U7 K- C0 O# A
        .name                = "leds-gpio",
8 F( W  A* y% e! i- ]2 Q# n        .id                = 1,
8 I4 ^- i- Y& \9 g        .dev = {) T4 }0 V. `) m+ f. S7 c9 K* f) h
                .platform_data = &da850_evm_tl_leds_pdata,+ Q+ g5 P: |  O( a. G& r8 X/ p
                .release = led_dev_release,
* d4 D2 D% g1 ~% u% e        }. \4 b9 k+ r2 n/ |! n# l
};! i( g% v4 y' ]/ f/ E, @9 O5 @
0 M) [8 O. X8 q% ]4 B. K
static int __init led_platform_init(void); \$ Q! q1 \) j: V, `
{+ Y# G6 p/ d1 ^1 T# ^1 K4 _: A
        int ret;
/ X+ s+ C( _5 I#if 08 \/ W! G7 E/ d0 Q" G7 Q; j) u
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
& E( w( N- |7 K) Z% n% i        if (ret)# T( h1 [- M/ |; x
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
) n  l- R  b( ~' V7 E! }; z3 Q, ~                                "%d\n", ret);9 n+ y7 e0 Z- w9 r' |  h6 G
#endif3 X7 {# s# B7 n
        ret = platform_device_register(&da850_evm_tl_leds_device);
. {! J* u( o* l! H5 B        if (ret)- ?4 i# \. ^& T7 J3 F6 ^) i& l, J
                pr_warning("Could not register som GPIO expander LEDS");
+ ~3 h8 g" R* v# e( _        else
! `0 V4 m8 c9 H0 S) ~                printk(KERN_INFO "LED register sucessful!\n");" k+ X& r! T9 d! i" X& i) K6 q( d
' z' a" }/ {% O3 d6 l
        return ret;
+ y. Z5 d/ c' ?+ |+ D" Y  B- X0 L8 H}" ]5 a; v4 n6 v, u6 c8 U4 P( [! j- q

# Q( ~4 O# E8 |5 Tstatic void __exit led_platform_exit(void)
1 O; @. {3 ]4 E3 N' J9 e{
7 L! G1 z' s  P) b9 h4 r        platform_device_unregister(&da850_evm_tl_leds_device);" {' g# o  g8 C/ n! H: c

, M9 k% y+ B5 X4 o7 ^4 F( q# G        printk(KERN_INFO "LED unregister!\n");
4 g$ O3 M: {7 W}& h+ J3 o* w3 u4 I0 G8 m4 J

; ?/ J5 Y- H/ gmodule_init(led_platform_init);9 z; A& z$ V* O- M' l) R
module_exit(led_platform_exit);! O( C# S# H0 U! N1 K( A
( ]( [, A3 V/ W1 J# a* s1 {
MODULE_DESCRIPTION("Led platform driver");" q* n4 w0 x8 ?
MODULE_AUTHOR("Tronlong");
7 |+ w0 r# q  q5 j% A3 hMODULE_LICENSE("GPL");- ^+ g$ \8 ~7 N) I( v3 M

! i2 F, q& c" J2 f7 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 00:01 , Processed in 0.039783 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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