程序注解 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。( y4 v5 w9 U6 Z& ]( m& i+ f
#include <linux/init.h>! q! }; I( C, T9 r( O
#include <linux/module.h>6 v& m8 e8 H5 V9 {9 F9 b1 d
#include <linux/kernel.h>
. b% ^6 R  I& e" b( P#include <linux/types.h>
+ {0 H1 j2 ~( b" F9 B0 d#include <linux/gpio.h>, M) a  V1 ]7 v, V
#include <linux/leds.h>
& h/ x" C2 m/ Q: n+ W5 E#include <linux/platform_device.h>
5 w. B% X( u) C, a: v- Z6 o0 ?4 B) s0 j( l3 \) {6 ]" M  w
#include <asm/mach-types.h>. c- R( `  s  m
#include <asm/mach/arch.h>
  i9 |. {! ~2 t: G& s  z9 t- y#include <mach/da8xx.h>
: v/ w6 ~! `1 q, G  C#include <mach/mux.h>' K  D- P) t& }) J& x1 [

: u7 T. s: P- x#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)8 [. w, k7 q/ X, w: z
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)
8 ~* n' ~4 G$ g/ u#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
7 ?, d8 t) V7 j' b' ~, W) c#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
: t- [6 r5 E7 A) L5 q  B3 h1 }4 _% N8 G7 t! a- t% q
/* assign the tl som board LED-GPIOs*/
" z0 T7 A8 \7 N; f  \3 W1 e, Tstatic const short da850_evm_tl_user_led_pins[] = {$ j4 I  I. |6 g6 @
        /* These pins are definition at <mach/mux.h> file */
' i  W: ^( v% [7 j( p! H$ d2 q. ~& {        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
( X' u* t) y& I& M3 c        -1
# J( ~0 z3 r* b" G5 \& {- I( ]& H};
, q7 n% }7 P/ f" a
; Z1 f4 h  P+ v$ H0 Xstatic struct gpio_led da850_evm_tl_leds[] = {1 k/ T- L( `' a  [" u" o
        {
5 y- b8 u, [# c4 Z# B% |- K% [  h  r, ?                .active_low = 0,, l% p. l# H3 Z! `- H+ S& Q
                .gpio = DA850_USER_LED0,8 z2 P% x& k4 A; p. o6 I
                .name = "user_led0",
/ z, g$ b* h# D! [0 Y. P% s                .default_trigger = "default-on",
: Q4 Y; \: P. J3 d2 I# J        },
+ A. L" N7 X+ {8 |3 e( p        {4 S/ _5 [1 I) }( P$ ]
                .active_low = 0,3 {0 ~2 A  A7 ]) c  t
                .gpio = DA850_USER_LED1,
. J' u5 C- ]. q1 g+ p0 ^                .name = "user_led1",9 Y8 K$ Z8 w# [* k+ s3 Z
                .default_trigger = "default-on",8 R5 ]: e1 L' K; M2 V
        },; S7 A0 v& u3 m& O  g
        {2 {- ?8 A, Z; c' u( I' Z+ m+ v9 ]1 F
                .active_low = 0,
; F/ v- M6 S5 s2 t/ x  u( M                .gpio = DA850_USER_LED2,! C- ~8 R6 L# z& s0 }  l# @
                .name = "user_led2",
5 K5 e# A4 t* v! Y3 `+ s& `                .default_trigger = "default-on",
' Q, {1 y* q% }        },8 U/ |6 n7 M8 I' A: m* k
        {
6 |2 @+ E' e8 L) Z                .active_low = 0,$ M9 L) O9 u( w& l6 ]7 U) f
                .gpio = DA850_USER_LED3,+ Z" Z8 G6 g$ b1 P; m0 W
                .name = "user_led3",  v; b4 x! F1 C9 L' w
                .default_trigger = "default-on",
  y' u/ i9 i+ T5 b  p        },. f* d3 D4 a% Y2 G3 I
};
5 [. y. _. r5 M- k+ ^4 ~6 g3 u% @5 u* Q
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
! e8 B* F4 |* @% U. a/ `        .leds = da850_evm_tl_leds,, ]& A3 U) c" H( P1 k: `& h$ ^
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
7 ~4 I5 P" G; l! A; v3 \, E};
$ K# W% b0 ~# b2 C2 d( ]9 O& V3 Q$ h( s: i) |
static void led_dev_release(struct device *dev)
1 z. E6 d. ]1 }! b{
. `$ j) Y7 `# r& l1 P) o8 N9 `+ {& Y- b};
: S7 G% L- D- W# U/ P9 D2 M, o8 W0 k+ G# v3 q6 E0 r
static struct platform_device da850_evm_tl_leds_device = {
/ M; b3 m- ?3 D, I1 i* T) l        .name                = "leds-gpio",& G. t6 N; t9 \) \+ ?  \' d# B
        .id                = 1,
: A- {3 s4 G8 Y( `& _        .dev = {; l; H, @( k, v1 U3 Q4 u
                .platform_data = &da850_evm_tl_leds_pdata,! p0 G) S; a. \6 C; X0 P- x; w
                .release = led_dev_release,: J1 G: i7 n  X5 d
        }/ q" n1 J/ z2 j. |
};9 r+ k8 v( n9 Z1 ]* n
! r4 R4 T$ @# H
static int __init led_platform_init(void)
  ?+ P( f7 F. F' ~; N{0 k8 k, s0 A0 i7 z# f; C  A
        int ret;
6 N: |, _' s9 _$ P* A7 {. _9 p#if 02 W) j9 ^6 c, D) C$ g' L# D4 V
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);7 L: j+ i  W+ T( P3 V; A& u
        if (ret)
. {: u) g6 O7 D" F1 k                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
$ g2 O. V: d; U: R2 l" f- y                                "%d\n", ret);( `2 {/ B8 g3 ^( a
#endif( p  u1 E( d8 T7 x1 U: a, I
        ret = platform_device_register(&da850_evm_tl_leds_device);
: s1 x, |! y7 A/ S7 V9 T# O        if (ret)) \6 I4 [) ~/ p1 \( ?
                pr_warning("Could not register som GPIO expander LEDS");# b4 R$ r8 A- o7 x
        else
3 h: P& x; F% A/ M$ B3 \                printk(KERN_INFO "LED register sucessful!\n");3 d. v$ Z4 h1 M. Y) t8 ?* A% W& D

' Y, m4 h% x/ c( g1 k3 E+ `7 M* ~        return ret;
- M9 M- P7 O9 \* m. Z}1 ^# u+ ]: v+ w
/ b% l0 }: O% E, c
static void __exit led_platform_exit(void)- p* P5 `2 R( X
{
5 Q" e: O" a  w3 M( _! T        platform_device_unregister(&da850_evm_tl_leds_device);4 `$ ]% w: D) g3 q5 _# H
7 r" v( m- L% g# ]/ B
        printk(KERN_INFO "LED unregister!\n");+ k8 {' A" Y! ?: d( U8 W$ D* X( E
}% G: N( |" I. ^* X3 P

9 `* I! t  h2 ~7 r: Z0 C* A7 rmodule_init(led_platform_init);
. A+ W2 p( e( j0 F3 J* Z4 g0 Bmodule_exit(led_platform_exit);+ k8 @; Z+ [4 f9 Z9 O  p( F

  U7 {' N* N3 r  DMODULE_DESCRIPTION("Led platform driver");$ t& L/ A2 z- j0 C
MODULE_AUTHOR("Tronlong");
5 s2 l! |; H/ d3 H+ D' Z7 q* y0 f# x( ?MODULE_LICENSE("GPL");, K- n6 Q# K0 a

: J9 h9 o1 F# B$ W9 G% O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 15:45 , Processed in 0.042647 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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