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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。( a5 C0 ~1 @' i1 M
#include <linux/init.h>
* _# g6 z8 b0 N0 _; e& [3 b#include <linux/module.h>& [8 n: `: Q) c" e3 w) e
#include <linux/kernel.h>
6 h3 e! \% X1 U, O) q#include <linux/types.h>- N3 s$ M4 W. x( u4 P4 k  b6 G1 N
#include <linux/gpio.h>/ M# b# k3 g; ~. Y
#include <linux/leds.h>
) F5 M: E" J1 A! D( Z& @# Y; R#include <linux/platform_device.h>$ T- t: R% M: q8 y

  C$ I/ o" J( k; `( o, n! C#include <asm/mach-types.h>
- l& Z3 z& w4 ]. {0 x$ S" E+ [#include <asm/mach/arch.h>+ j5 a% P" ^# }9 V! U4 s
#include <mach/da8xx.h>
" X, \" d7 U( V0 q4 T5 ~#include <mach/mux.h>
8 m# g; }3 J/ C2 X6 C9 \. @* A. L: _+ G. r( X0 S# }
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
' K* p" Y2 [0 ]$ Z2 o4 [#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
/ a$ T) }% `/ E7 @1 T6 C6 v2 X#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)% E5 @2 v, v( }- ]' j
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( \0 h6 j# ?4 C/ f* G- Y( K5 C

* Q3 S) F! T7 N8 k/* assign the tl som board LED-GPIOs*/
8 [! R& ?4 v- mstatic const short da850_evm_tl_user_led_pins[] = {
7 r9 n+ A+ R7 \, p        /* These pins are definition at <mach/mux.h> file */
2 X8 z' U/ p5 d/ Q. Y, c! B, r8 T        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,. O1 `% \* X" s  M
        -1
4 I- F- C  X3 Q# K};1 Z/ t) J7 h$ }( @( D% s9 I! G
2 [4 g; b; }+ f
static struct gpio_led da850_evm_tl_leds[] = {# v# \4 k5 O$ _, V. z6 ]
        {
$ B& x1 g+ P5 ?5 l                .active_low = 0,; F- a! b# s7 s: O9 c5 ~
                .gpio = DA850_USER_LED0,5 b  ~) X% P) O" s  Z
                .name = "user_led0",4 B) m( t' ~! N2 g& `% p
                .default_trigger = "default-on",! J" L0 [9 T! M+ N; c! i
        },2 W: Q+ T' H( W( V
        {
& L; [+ L7 C! x' p% r                .active_low = 0,
; T6 s5 r' E& w: }; f                .gpio = DA850_USER_LED1,
( F* X0 [- `3 ]+ [                .name = "user_led1",
9 I3 b) _* g/ Z$ T% W! b$ H9 R  k                .default_trigger = "default-on",
# Y3 A; _! ]$ M, Z3 o        },
! f! n3 r9 p7 P) ?        {# J3 k  D% q9 f+ B. R
                .active_low = 0,
  k, ]6 a- z' N$ `. @4 B, ]) f/ y: U. G                .gpio = DA850_USER_LED2,
, H5 ]! m% ^' X/ f7 L$ V                .name = "user_led2",
3 k  m& j6 ?& A  m                .default_trigger = "default-on",' [# g) W# W4 w; b/ e$ w# U
        },; }  O1 L: [8 k" w7 c! L* ^. k
        {  \9 o# }& c& G9 F) a; \4 y
                .active_low = 0,
& z7 P. [/ z! L, f3 c2 `                .gpio = DA850_USER_LED3,0 `7 m  {* }5 P" k) F1 h4 S
                .name = "user_led3",6 q5 M2 M5 \  ^1 Z( ]2 }" Q
                .default_trigger = "default-on",9 a2 c/ j- [8 E  z/ i0 P) w4 `" @, d
        },1 l& v3 c, n9 |: p
};
# g3 u5 x* v3 C; L1 i( a; a' L2 \% {+ t: H$ j
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
7 u- F& z* H2 v* X% Q# m        .leds = da850_evm_tl_leds,
  K2 D5 T$ |' C6 P8 b6 D2 k. V# s        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# t' \4 y# g- x
};) G. C( w2 l+ y. p8 K" _$ z$ k; T

) O2 |0 x( `) _, n' istatic void led_dev_release(struct device *dev)3 y/ l1 _. {" |
{
5 o) ?; D+ L5 ?0 }, m6 E) N};/ J% r2 D( n2 a6 c$ K* V
% {$ |: v$ G% G9 q' T4 A
static struct platform_device da850_evm_tl_leds_device = {
- ?9 G, ^) S6 A; |  V8 l! c        .name                = "leds-gpio",
% u3 i9 y# `' e# _! A  n) H: [        .id                = 1,$ T# a* K: e6 }4 s! r
        .dev = {
- b' y! ?2 i) I( S; i% e; V                .platform_data = &da850_evm_tl_leds_pdata,& ~7 E# @9 z1 ]& X5 W* x% l# G
                .release = led_dev_release,. }# T$ e5 r* _2 `; u# m
        }& l, [5 a* @# i2 R
};
- d6 w# v# H3 S, t! }& {" V4 n/ t- W
static int __init led_platform_init(void)9 H9 r  X" j  N3 Y8 W+ j- q
{
8 i9 ]5 [$ |' R, t3 G5 }        int ret;
, ]1 H9 }3 g3 r. j% h, @: K, H#if 06 M6 p' v) N2 p- [% \5 {
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);3 [& _; w1 F6 j+ I# ~+ t# P7 ?! |& u
        if (ret)2 `4 v. q$ x9 T' S* |* i3 J
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :": M! V+ R' h9 M# k0 a
                                "%d\n", ret);
) |+ H) S/ B% A4 S- B0 }! ?0 C3 h#endif
! r+ z; @% L. G/ d- Z0 i5 i4 A  E9 A        ret = platform_device_register(&da850_evm_tl_leds_device);- g' l% [; F9 ?* y
        if (ret)
3 ]" X+ G5 {  x( S6 Q# @$ A                pr_warning("Could not register som GPIO expander LEDS");
% ~0 {6 Y0 ?2 {7 @0 F        else
; L1 q  U, f- x3 i. a  K                printk(KERN_INFO "LED register sucessful!\n");
0 B8 S8 I3 G8 [5 S5 j
* k0 E9 H. `0 i" P" o7 e' e3 z7 i        return ret;# ^6 o/ \" C5 g: q
}. D: O5 L' `3 [; h1 r7 {

  V) D3 e% j" u8 z' Estatic void __exit led_platform_exit(void)
2 C( d+ O' Z( u! P) x8 s{. w* p) t1 X( c. I. H  @7 F
        platform_device_unregister(&da850_evm_tl_leds_device);9 K# x& g1 i# I  a
. F. l0 M! O" v4 o4 b, w% V
        printk(KERN_INFO "LED unregister!\n");
: c- [9 r. P1 F# w. |5 D}
; v! N. @: m, ]$ K# B; r) |
- Z5 X) v: R" {4 |module_init(led_platform_init);
% }) T& c! a. r/ o( \7 Lmodule_exit(led_platform_exit);6 m1 @4 |- Y. q- T- z

/ Z% v5 l9 \! D& X/ WMODULE_DESCRIPTION("Led platform driver");
& X7 Q+ v: o, `2 X# {& iMODULE_AUTHOR("Tronlong");
" f* S* G* e& c$ T/ ^5 FMODULE_LICENSE("GPL");* ?/ J' t" g$ S# I
% i, f( J; ]3 G/ X& }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 01:23 , Processed in 0.041033 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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