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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。' h0 y. F( @8 O# Z" S1 w. H: u
#include <linux/init.h>
& i$ \- n" W2 f& z* w: K( I: u3 f. G#include <linux/module.h>
+ {7 m2 ?- X' d# ]9 Y#include <linux/kernel.h>
. x$ }  [% f  x& o6 r& ?  s#include <linux/types.h>/ G$ q. I' ?, P
#include <linux/gpio.h>
5 b& J0 G3 i2 l! Q& ~/ n#include <linux/leds.h>
  f; {  \; [9 I% V* j#include <linux/platform_device.h>
; D/ U' ~. o8 H) S4 T  z4 p. D! Q' W# j1 G  [# D8 d. L$ f
#include <asm/mach-types.h>
8 e& \. c. g; w#include <asm/mach/arch.h>$ h/ V' e& t$ |7 K# w; a) Z
#include <mach/da8xx.h>
6 d. t) L+ M! H#include <mach/mux.h>6 U4 q8 V. L; g* h

3 l+ r. b: ~$ u- w; L7 a#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)0 K" t+ `, B- N
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
7 x$ J1 [0 B$ v: h) `#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)9 E* d/ |+ c' P  F! D& J
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)* j9 R+ ?# P( F  x5 B

) g/ v' \( k8 L* B" I: x/* assign the tl som board LED-GPIOs*/9 R9 j$ A4 C8 Y8 H) H1 B* M, C1 Z; G
static const short da850_evm_tl_user_led_pins[] = {) @8 i9 t' o+ B5 p4 R( [
        /* These pins are definition at <mach/mux.h> file */
4 j5 @/ [- e0 u& X4 I, ?6 Y6 p        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,* U6 m  B# q' q- [- ?- V# w
        -1
% x6 m+ r. N$ o' g+ ]5 `6 k};
/ y( q$ a3 N/ v- B1 x" D3 y) S+ B& b/ B: {; h9 j) v; q( H
static struct gpio_led da850_evm_tl_leds[] = {! W4 R' O2 v4 V" h6 J7 {
        {
5 o, C$ D/ z, k                .active_low = 0,
' T$ b" d  l% Q) U/ V8 v6 K                .gpio = DA850_USER_LED0,
6 ~, H: Z, Q9 X8 f+ @' f3 y                .name = "user_led0",1 O4 g% g0 u& s- a, S0 J7 D
                .default_trigger = "default-on",5 r0 F& A1 v5 W" D  U/ b
        },- f( l9 G) ^, E0 W& K
        {) Z# J& K2 Y; x9 l
                .active_low = 0,
  i2 m% m( l& @1 l                .gpio = DA850_USER_LED1,. N/ }0 P0 n4 L. }  I7 R8 G+ L: K
                .name = "user_led1",% z% W2 |8 |. o( M# i
                .default_trigger = "default-on",$ e6 y* I& c! D2 z7 w" x. z
        },4 a0 R. w- ~6 I! y* Q0 x& C$ F7 `
        {
2 ^- c! a# O) @: u9 i                .active_low = 0,
$ e  q2 K7 D7 Y                .gpio = DA850_USER_LED2,
8 T* I4 r2 \0 n) u( I/ z; E  [                .name = "user_led2",+ v8 ]1 u* P7 [
                .default_trigger = "default-on",0 r7 L7 Z+ q: U5 `  r
        },
* d# Y2 a$ {- s: G" v" d        {1 d2 k) W/ \. U7 B2 ^0 P6 ]7 ~$ n
                .active_low = 0,1 ?, K0 w4 n. t
                .gpio = DA850_USER_LED3,
( o( }( @) J8 z4 B                .name = "user_led3",
. ^4 z, _  k/ ~4 H2 Q                .default_trigger = "default-on",
% k' J4 f5 W, N        },
# W* b7 J. l3 O7 Z: Q6 a6 x};
( C. Z6 t! m8 H' ?" C& w8 ?& m
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {4 F0 ~6 R1 l' g4 J) o4 @
        .leds = da850_evm_tl_leds,
: Y$ `. |3 S) r* M/ _8 O        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),# J; _: A- e! }6 i
};
( z1 P; d. W3 _5 j$ C* S) K. L3 f# B3 I1 C" Q, v% C5 `
static void led_dev_release(struct device *dev)
8 }8 |5 a% Z9 y, P% E: i{# z) z1 T0 k8 \1 v3 ^) g2 t2 m
};( d, |/ T8 i5 e& R

5 E6 M! ~8 f% Vstatic struct platform_device da850_evm_tl_leds_device = {
. k0 i  J6 o; C4 E/ S6 n- d        .name                = "leds-gpio",2 q! f& C$ r6 b  _: |$ z/ t
        .id                = 1,; p8 y; s1 |9 k
        .dev = {
$ ^) ?/ S, m5 ~1 g6 s% F9 k+ T                .platform_data = &da850_evm_tl_leds_pdata,) r% h7 @2 P' o' z6 Y
                .release = led_dev_release,1 H. W3 r% U& P
        }
1 ]3 W! E% b; x0 z};
3 D+ O5 m9 u" L& U) }- B! v1 I( ?$ u; z
static int __init led_platform_init(void)9 V8 Q- \: N0 K7 U% ~
{
0 N, j7 ]( H5 a/ r  q$ M. ^        int ret;
2 x, `1 n. d; z#if 0
3 z' _% @5 d! Z7 x        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);8 N, B' F& m3 F0 Z1 U" K* \# K
        if (ret)& J9 Q7 B! O7 Q5 d# X
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
  d# e6 t8 g, L1 g                                "%d\n", ret);
6 r9 A0 L4 k  s0 Y! |#endif) T: Z( z/ |8 Q  k7 O
        ret = platform_device_register(&da850_evm_tl_leds_device);& x, \3 S2 i/ {4 F) F% `
        if (ret)
! t; f4 N: ~1 C% F# L. K  D                pr_warning("Could not register som GPIO expander LEDS");
% e: h  t& }( V; M        else
: l) A: P* h2 b: {( t! w% y# f9 T) i                printk(KERN_INFO "LED register sucessful!\n");8 j% ~) v) z! f6 ?) ]7 W6 Y

7 d8 p8 [% i( U* J6 n6 V3 X        return ret;
% q' _& O% z! I+ J2 T}
6 Y, e9 V, `( O& v
& K0 y% D2 v% A. p: Jstatic void __exit led_platform_exit(void)
- S: N: F+ `, m+ l- t{
$ @' |) K' {8 U2 }7 o2 F; O# p* y        platform_device_unregister(&da850_evm_tl_leds_device);
# g) Q  H8 ?6 w8 j8 n/ G% x3 A' Y2 z& m' r0 l
        printk(KERN_INFO "LED unregister!\n");
0 h+ l& k% M+ m5 R: k" K}1 z+ M; i: t+ f- w: _( W, g6 i
2 `1 O/ h. [/ ]  f' s; g; l+ D# J7 c. [
module_init(led_platform_init);7 e2 _6 g) [, c
module_exit(led_platform_exit);
  k( g1 v& h2 r) }% s$ a' @4 y( o* `) f: X* O" P
MODULE_DESCRIPTION("Led platform driver");
: h( n* z- O7 C4 D+ YMODULE_AUTHOR("Tronlong");
/ {2 W: A5 N: |, U- @MODULE_LICENSE("GPL");
6 W- G6 D3 I: Z! c- W7 ^& [& ]
2 T1 k. G( f- A9 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-6 00:27 , Processed in 0.039694 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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