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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
% w% D. Q' N4 L#include <linux/init.h>7 Z8 l. q; V8 \  _- |$ S0 ]
#include <linux/module.h>
% w" U& {  {/ g% Q& D#include <linux/kernel.h>
$ ?% U& j3 L2 |  k5 P#include <linux/types.h>
, v+ z9 D9 e7 i. Q! U! |$ m#include <linux/gpio.h>5 u: i( Y; o5 E6 C, F: c& N
#include <linux/leds.h>
, K& s9 y6 ]) R7 w% N; W#include <linux/platform_device.h>  ~2 }! P6 ~) x3 o# \; ?

, p" v8 o4 y( R; c8 r* I" q#include <asm/mach-types.h>
2 P  K  ?4 v9 c; j#include <asm/mach/arch.h>0 T* ~' w% l" l8 [4 o
#include <mach/da8xx.h>7 g2 _% Q, p) c- @
#include <mach/mux.h>
' g& v) k1 y2 P& n: h( @, B
: ?  W# B" t5 ^0 w, t#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
2 f' r" ?' J' ~#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)) ]4 c+ t' u; x. Q: D3 g
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)2 a8 ~- f" G* v4 n, b0 }3 x
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)( c3 t% w, t/ A6 [

+ q- V; O& q, g5 X' B  L+ _/* assign the tl som board LED-GPIOs*/+ {1 i8 d$ P7 o6 d
static const short da850_evm_tl_user_led_pins[] = {" G: K, s: d, {; z
        /* These pins are definition at <mach/mux.h> file */3 j! e/ J8 @. y$ `7 o, d
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,* ~: y* R7 z& Z- v, k# Y- ^' Z' Q
        -1
* r  s+ e" j. e" E( E* Z  a+ g};0 a6 W  Y  q+ ]  i! \& I
8 N5 F% W. A* n4 g. I* w3 y- H
static struct gpio_led da850_evm_tl_leds[] = {
  M1 u  n! O1 `7 @        {
: A! o4 M, n2 x3 n8 Y, O                .active_low = 0,9 n9 S) C4 Y+ y8 ?, I  B
                .gpio = DA850_USER_LED0,' k, F) R# n) c. z1 L
                .name = "user_led0",5 D4 X. [6 W; @: A
                .default_trigger = "default-on",6 g! H4 U1 `0 _7 s
        },3 y# L1 _% ^: r0 X, @5 v
        {# p% G& L3 Q2 e* r- M  F- h6 _; O9 s
                .active_low = 0,
& ]2 O- K, }- N& R0 e# H2 B                .gpio = DA850_USER_LED1,
3 T& r7 n4 z4 n2 R. b3 ^; B8 t                .name = "user_led1",
! \: k# u2 M- u0 u: j  @& [                .default_trigger = "default-on",
: M4 v) ~. r% z        },, S% [5 V1 f/ I! T2 t  _1 ^
        {
- y0 j- D, `3 Z9 N/ j0 _* X                .active_low = 0,  S$ w9 D" a+ S$ ^
                .gpio = DA850_USER_LED2," z( ^- m& ?- k, c' I$ R
                .name = "user_led2",
6 Z0 O: @. E6 `0 ~( \$ R                .default_trigger = "default-on",! G1 a% ?  P6 h" {) O4 b
        },
. v$ e6 |, l! R' h3 C% U2 V        {: ~7 j5 a0 O( P, X
                .active_low = 0,
" J! L1 `" ]6 A4 ^9 l# r9 A0 m                .gpio = DA850_USER_LED3,: V" n' o0 Y; A7 [2 i
                .name = "user_led3",5 }' o$ a+ l7 p9 c; ~! W
                .default_trigger = "default-on",
) P) b  ?' Y" e        },! j! K7 ]; j. t$ Y$ K5 W5 g! T
};
* @5 T! \4 e( q  n8 e3 i
- e# B) z6 V7 X  i7 m& |7 ]4 b! J# Istatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
6 i" t2 t* p$ \& {, o        .leds = da850_evm_tl_leds,
- Z6 J% T7 e  D: q3 T% `        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),3 N4 _" a7 Z" E& ]2 ]1 E
};
8 P' u2 s8 a" M/ F3 ]/ a0 v- ^  \8 H
static void led_dev_release(struct device *dev)
* Q; P- M% Q* b1 ^1 o5 c0 d. f{
  Y) ~; p) Q% v% n8 G8 |};
% W: o+ w! w+ ?/ H6 C* J8 S7 T9 a! s
" k4 L9 R. |' i3 r) v* ]8 P; Vstatic struct platform_device da850_evm_tl_leds_device = {
$ V! [+ a. X9 `" A3 t( u        .name                = "leds-gpio",+ L5 g. |' I. d& A
        .id                = 1,
! b$ r5 U" |9 w! {' m/ k; X        .dev = {; z- }& x, O. `3 @4 i; P+ ]% [* ~
                .platform_data = &da850_evm_tl_leds_pdata,0 C- |9 E+ n  v$ a/ Y1 ]
                .release = led_dev_release,! H# Z# [! ?4 Q
        }: `" o( I. F2 V0 C; T( u3 V
};
) P5 p, s  p' t+ l. z
6 V' g$ ]2 e( P$ m$ X7 ?static int __init led_platform_init(void)9 z* x/ |" u0 {, ~/ a. e
{; i( [2 {: J( y
        int ret;6 m+ [; B7 P& ~1 o7 ^& k+ n
#if 0
! _+ ~! J8 z* ]4 m        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
8 V9 A% U1 q0 u  r$ O" @3 G+ s9 ~% w9 S        if (ret)
# m: U; ~& }8 N% I                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"9 }- X" ]- K7 D; Z3 \: @* {( p+ A2 Z
                                "%d\n", ret);! I/ \6 s; k. G9 m
#endif
$ }$ E2 P' ~. I  a5 y# _( q        ret = platform_device_register(&da850_evm_tl_leds_device);6 }8 _' w8 }; n( p4 g" M
        if (ret)
4 Y. Z1 ?* c, _$ U                pr_warning("Could not register som GPIO expander LEDS");, C# q% ]0 N$ O0 K
        else
2 ?8 f2 [; D; L* ], F! z4 w: x  b$ j                printk(KERN_INFO "LED register sucessful!\n");
9 K# ]% \2 W% @0 R1 u- w8 ?
  u# q0 v0 N% K, M        return ret;
! ^! _% w+ E4 r$ I6 M. l. @}0 k: j9 @5 J- i; \6 z* j

  s+ P2 p& ?# r5 _) n  wstatic void __exit led_platform_exit(void)4 U0 u1 m- V4 H6 q, _- w  |$ r
{: |( z' R" s& y8 H
        platform_device_unregister(&da850_evm_tl_leds_device);  _- K; q1 `. g# S2 t/ z5 `) c
7 a4 P$ a) {5 S: M/ \
        printk(KERN_INFO "LED unregister!\n");. X7 c; B% P$ P0 C# D* z
}) ]& M9 k) p: j0 j
- d+ w! ~" l; y" R: v9 l& y+ }
module_init(led_platform_init);* D$ t! O0 `% o: S! L
module_exit(led_platform_exit);: W' K* h/ Y. \- \# G& j5 B2 R* A! @

; z4 K0 V' y+ Z1 i" c8 u6 [MODULE_DESCRIPTION("Led platform driver");
4 e0 s2 r; O7 ?/ R7 S6 l5 u  |MODULE_AUTHOR("Tronlong");6 e9 J4 h: X1 S) k1 S. m
MODULE_LICENSE("GPL");
" g6 I) |5 V5 ?: c- R' `: T/ g" |: ~' ?" P4 F6 e6 b  {) V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-1 18:00 , Processed in 0.039315 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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