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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ m9 B$ m, X4 h  W* b7 j( r
#include <linux/init.h>  {) ?" T7 M1 ^6 A7 E' p0 l# T& o5 j
#include <linux/module.h>
+ q0 l8 x  x: E% F- D3 @#include <linux/kernel.h>. k9 B9 u" ?) X2 Z; I" Q
#include <linux/types.h>9 n/ X1 v4 ?- R
#include <linux/gpio.h>
" G3 u% d( g3 L1 v  ]/ j8 J#include <linux/leds.h>
6 p3 P+ ^4 ^8 `7 e6 j) r  l#include <linux/platform_device.h>' Y% ^! Y4 j$ p; s) ?8 T

4 H4 P, y) Z" W! X; X7 v#include <asm/mach-types.h>5 |8 r, L" C3 s1 _% V8 z
#include <asm/mach/arch.h>
) c8 w% j# n. u6 l; M0 j) \#include <mach/da8xx.h>
# L$ n. K  l! W2 `+ _. {8 i/ _2 W# J#include <mach/mux.h>
& h1 W6 f$ X% T/ v# f% k! n3 x: S2 I' f/ {) t5 B
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)8 \& m# U. @$ f
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)9 K4 X' a5 O0 l" t5 U
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
. Y8 ~5 [  l+ ]; B" r) f; |#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)' Q9 r' g7 n+ q- o  S+ B
, {- c+ x2 V8 f- H  `1 l9 n
/* assign the tl som board LED-GPIOs*/& A) s( r9 R/ }3 w
static const short da850_evm_tl_user_led_pins[] = {; i' Y. C. B- o* A( e: C- A
        /* These pins are definition at <mach/mux.h> file */
% s0 G  Z' ?8 e7 P5 s9 y- `        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,- N) g+ A$ L- I# R$ e, k. d# o
        -16 Z6 t3 Q/ {" V4 R
};
( s; D+ K% ?4 }' P
. ]  Z. E, s1 d  w: ^static struct gpio_led da850_evm_tl_leds[] = {) p0 t# h  R0 c# j) j  d
        {
% r5 @9 ^- y& P) N7 J- p" S                .active_low = 0,
; g1 f  Y6 ]! }9 P                .gpio = DA850_USER_LED0,
4 |- o# R  u) U2 r. e" @5 W) {                .name = "user_led0",
% @2 K; R) S7 {4 Z6 b4 Q                .default_trigger = "default-on",- f1 K. M1 t- Y9 B4 W
        },
& o" ], A% z8 ^; ^+ R6 u        {! L9 g" N! n5 p& V; a
                .active_low = 0,
  H+ b. G- s/ w* Q5 ^* y- g                .gpio = DA850_USER_LED1,* o! A5 k2 p4 N/ x- O
                .name = "user_led1",$ S1 U# O1 a+ B* Z* k
                .default_trigger = "default-on",
: x: c2 s# g: X/ h8 r        },
0 q: Y: R7 \8 D        {  `+ @% u8 |& C) p
                .active_low = 0,
# M( B/ I3 S9 D* t' H' {8 ?5 K' z) e                .gpio = DA850_USER_LED2,
5 m, k6 M2 ?  p  P/ `7 ]                .name = "user_led2",
2 s; A- f( I- B! \1 W2 g3 v! t                .default_trigger = "default-on",9 G( w3 Q  l+ o1 g. [# x. r5 V7 q2 e
        },  Q/ ~7 u4 A9 [/ Z
        {
0 D9 ^- @& {- ?4 i                .active_low = 0,
# \* ^2 w* {8 I& c: X4 ]                .gpio = DA850_USER_LED3,
8 d6 v% k( z5 A                .name = "user_led3",
) _$ }3 T. y$ M* `8 C) J                .default_trigger = "default-on",
& I. N" |; p% j8 i, y, u. }' R        },/ G$ E& r  [5 J! {& T6 P9 K; I# g! Y
};! e# F- J, y" z: P- a- R  W

1 x. Z, e+ o, t( U$ ?0 Vstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
! K: k( W6 p9 |        .leds = da850_evm_tl_leds,! u  {4 t6 G% J/ \; B1 K
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),$ z7 c/ \/ S4 q4 |/ z
};
; p! a/ _) f" a/ f( \5 Z
( A. N, ^6 P, U) Gstatic void led_dev_release(struct device *dev)8 W  t4 c# a6 J
{2 W% T2 e1 y0 D+ _. l# `: b1 A$ o
};
( i) N; ~2 N- D* H, c# n7 ?- N* x9 m5 b5 c
static struct platform_device da850_evm_tl_leds_device = {+ B/ c1 ?& p4 i# v: C
        .name                = "leds-gpio",
0 F- I. j" G7 I/ e; X. E! `        .id                = 1,
9 u& w) K0 b- M/ N        .dev = {& I, q; b/ O% k% ?- R
                .platform_data = &da850_evm_tl_leds_pdata,
  a8 j9 U) ~& _& K, ^& |) w0 P                .release = led_dev_release,# U$ K- z: r: @/ O; c1 c
        }( z- ^8 J8 G' p
};
9 Q/ ?4 ~4 D7 s* b$ y4 U% \" ?, e% ~5 S) {
static int __init led_platform_init(void)  `$ C8 b1 |8 B( e/ k0 _5 @5 g' i
{3 D4 Q/ N, C; n" {/ j
        int ret;
0 L1 |# u' O& S( g# R3 H3 h#if 0( n/ p9 h! H+ t$ ~) D( T% V% q: k+ j
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
% f1 r. S1 k% H" q/ Y4 @        if (ret)% b4 Y' F6 A% n9 x5 }0 v
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
) {/ b" G9 M, h# M4 u" X                                "%d\n", ret);( q) f& I5 \- p+ x8 E
#endif9 c3 A5 d' Y- I
        ret = platform_device_register(&da850_evm_tl_leds_device);
6 V6 M5 b9 H  d# e        if (ret)
( B! I. u# P( S% D( O3 L7 q                pr_warning("Could not register som GPIO expander LEDS");1 z2 J2 N7 }' B9 g& w7 ~) ^
        else8 A# u& {% K/ J" d9 P, a/ j
                printk(KERN_INFO "LED register sucessful!\n");7 B' l6 x8 C/ V0 [/ s
5 o3 V  ?) |* \4 F% w9 _
        return ret;
& m0 p( I! t0 p4 C! F  w% P7 l! `}: \" C) |- L5 P$ d1 R$ d/ t, t
+ l6 H! T7 Z& A2 P$ V! c5 m
static void __exit led_platform_exit(void)$ f( |% v7 `% \3 d' V" t1 k
{
0 I3 [! T+ R' V        platform_device_unregister(&da850_evm_tl_leds_device);5 f' o3 l+ s" n

8 s( c5 g' y0 u# e, R        printk(KERN_INFO "LED unregister!\n");
0 ~  w$ f# r  \4 C}7 c+ W% d4 Y  G4 w$ {( D. i
$ A2 I2 x0 P0 s. `) G# G! O0 C! e6 w5 k
module_init(led_platform_init);
! J8 f% @( o& Omodule_exit(led_platform_exit);  L1 U1 x6 {; x) o
% ~# k* N6 }& w8 a2 y/ S3 N
MODULE_DESCRIPTION("Led platform driver");
6 ^$ S$ Q# c4 ZMODULE_AUTHOR("Tronlong");
6 V0 d  a" \/ e8 J' N4 \4 D7 WMODULE_LICENSE("GPL");
# g0 v# ~8 p& _- w/ Z7 v" J/ l( [! B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 10:57 , Processed in 0.040695 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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