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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。$ X" o5 V1 D1 k6 U
#include <linux/init.h>3 ^" }0 ~$ S9 x4 S+ `# v) e7 f5 D
#include <linux/module.h>
' e9 S! ]! X0 O( _8 D' o/ X#include <linux/kernel.h># z, y# ~9 Y" [
#include <linux/types.h>
* X2 n' @$ O. M/ K  P: @3 t#include <linux/gpio.h>
7 s* t0 N6 W% M7 m: ]* M; I#include <linux/leds.h>: H- c) o5 C( Q. k/ H! k( L( f
#include <linux/platform_device.h>: R* c, y* z8 `8 a+ \& q( m
2 Q* X0 Y5 H5 }
#include <asm/mach-types.h>9 y* d  b* L7 T9 h: ?+ f, k
#include <asm/mach/arch.h>
( m" k: m/ Y4 E3 P6 }$ M#include <mach/da8xx.h>8 ]5 a# s( q: V' m1 H* a
#include <mach/mux.h>
# x. d5 R6 J; \* f+ h% g: M
9 }0 _* r' d1 ~0 c' A) G% X+ i#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
' ]: s: S' N1 u2 T  E8 s1 H#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)' x3 ?# \* ^( d" {4 `2 L
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
. X  r! J) `. V- T! Y+ p  z#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)# m/ K$ P7 g" _0 y6 l% J+ P& v

" y1 F* I: N# v: d- W/* assign the tl som board LED-GPIOs*/2 j4 W/ r2 a/ J  Z2 n
static const short da850_evm_tl_user_led_pins[] = {3 x& S! P+ i1 K4 Y7 W/ ?
        /* These pins are definition at <mach/mux.h> file */
) p& ^: p7 H& F- F9 |& j: i        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,6 P* S3 W5 Z: Y0 T- [- h& s
        -1
4 |' D- ]! y9 g};
' o2 n7 u4 Y2 |3 d: I! L& V' _2 A# E! C+ }6 f# L: x4 J
static struct gpio_led da850_evm_tl_leds[] = {2 d3 w( u9 ~5 W3 `  o
        {
3 O; U0 z, G6 a) n1 Y; W  x6 Y                .active_low = 0,
: Z6 a$ a6 @2 f2 Y. h' \# W                .gpio = DA850_USER_LED0,
' _: P1 l0 Q* B: a                .name = "user_led0",
' m$ @( m, ^- u                .default_trigger = "default-on",
8 {5 f8 u% c% e" a( S) I        },4 q0 B5 n) M( M. @# {
        {
$ Y1 K7 o5 _3 t9 K0 H/ s7 s                .active_low = 0,
7 z& j/ m- f# D                .gpio = DA850_USER_LED1,, l3 Q. V6 B  \( Q7 _: L) U4 `
                .name = "user_led1",; d1 N) o3 n5 P2 n
                .default_trigger = "default-on",- U1 ?6 X- v: |8 o
        },$ W6 `$ \/ {4 O0 ^
        {
( {8 A2 J* S9 R# Z9 y7 V                .active_low = 0,! Z2 Q9 \* [: k
                .gpio = DA850_USER_LED2,$ t1 ^, _3 p3 }5 C
                .name = "user_led2",9 D1 x0 ~1 k7 ^6 Q, a  R
                .default_trigger = "default-on",
0 x! \$ E) Y# [/ j" k6 e/ d        },
6 z/ [" l* @! z5 l        {
6 S  u) {/ G+ [7 o2 e( {1 H  Z  K/ o# ]! p                .active_low = 0,
6 N2 K/ M' ]  o5 v* ~* O3 b                .gpio = DA850_USER_LED3,
; C. N2 X! Y! @. s  f                .name = "user_led3",. L) f, U1 S$ U
                .default_trigger = "default-on",; W; l: r) _3 `8 X0 J3 m2 a
        },- N, h& S+ \( w+ I
};
, Q5 s2 ~% H8 e* ^$ }
. w) ?5 w8 r) Y/ s% Istatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {2 Q  K" i1 g8 k8 x6 f/ z; [
        .leds = da850_evm_tl_leds,
  G6 k  D. v+ _' R! J! A, M        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),( L$ Y: ~. N; k  b$ `! ^3 l! ^
};; s1 Z' L8 n9 y
) U5 C' p; t8 p$ R0 {
static void led_dev_release(struct device *dev)
" x0 t7 i  G9 g+ i4 V{+ H1 z  F! n+ ^: U1 F
};4 P% c1 x+ f. i5 q9 u& J
0 Y0 [  W, L! o+ c1 Q
static struct platform_device da850_evm_tl_leds_device = {- z' ^7 a1 V+ R3 `- F# S
        .name                = "leds-gpio",
5 g7 [  [3 c2 @: n/ U        .id                = 1,
. \3 E2 b4 r6 W' `- C8 b- d$ Y        .dev = {& O' Y: `5 T: u
                .platform_data = &da850_evm_tl_leds_pdata,! |* ^; Q, c7 Q1 }1 ?) x7 w0 x9 R
                .release = led_dev_release,/ _7 ~* w- e# N( Y
        }1 l+ ?/ N7 Q1 ?- g# U# p. D
};
# U. K) t5 x. G6 x# C* u2 S' p7 J, K0 }8 \( ]( v+ Q+ Z- z. P: j
static int __init led_platform_init(void)& t0 d: ]6 l- I8 N
{2 z4 f+ I" S/ [* d! {9 H, m
        int ret;
8 d( F: h" h# r! ]3 H3 h' S+ X#if 02 d  F9 a6 q! {: o4 V
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
& a( b+ x, F* V# ~. g$ O0 o        if (ret)
3 Y4 p0 x, Z( j; F' u6 |2 ?                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
6 C$ @1 K; G5 n6 Y5 g7 s6 H8 b/ M                                "%d\n", ret);
0 }& E3 a) I0 I#endif
' D$ p+ E' N6 [" Q$ \        ret = platform_device_register(&da850_evm_tl_leds_device);
0 K, C6 ~; c' u$ G* C        if (ret)
0 \& i2 H2 e# r/ i6 M% D7 i                pr_warning("Could not register som GPIO expander LEDS");  X! i, {( g8 o1 v6 W
        else$ m3 D8 a( J# o9 D! L
                printk(KERN_INFO "LED register sucessful!\n");
1 r% R( ]" u! U7 ~% _7 J1 o9 t+ Z8 a7 k2 q3 @' @& s, x2 [) I+ h% a* p
        return ret;
# W& f4 K) e2 X6 y+ K- i( x}
" I& K4 d( R& x4 ^
! c; I9 |/ y; f% Ystatic void __exit led_platform_exit(void)- J  k3 R* d/ q- J
{3 I7 J- \% y* Y4 H  s5 A4 O
        platform_device_unregister(&da850_evm_tl_leds_device);
& a2 k  V  y5 f" {# b+ O
0 S5 C2 b( N5 P/ s! J0 o        printk(KERN_INFO "LED unregister!\n");
# s3 m4 l# R# m4 r, S, A; L7 K. A}
* W& i% U3 K- _1 g( ?1 h. Z  E9 j2 q" f. @4 p" F
module_init(led_platform_init);
5 v- }$ j1 X3 H3 k! q% zmodule_exit(led_platform_exit);( H8 H7 T. L1 C: Y5 L+ p
  a5 k, m& z& \" w  h7 {+ L
MODULE_DESCRIPTION("Led platform driver");
$ w& u! y' L* r! E! x- C8 OMODULE_AUTHOR("Tronlong");
/ W: Y  T' ?# Y9 p% |MODULE_LICENSE("GPL");
) u& R4 t0 }- O# J2 J
+ Y$ k3 g; C# H5 R- x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-4 22:30 , Processed in 0.042824 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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