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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。" @9 `- v! r. K, S% w
#include <linux/init.h># [$ o- {; p! q
#include <linux/module.h>
: s& S1 @* L- q* T#include <linux/kernel.h>! q* G' V! G4 N+ g, s1 B" r
#include <linux/types.h>
0 J6 D8 |( f1 y% r+ Z  F( E#include <linux/gpio.h>
" z1 f- G+ u+ `0 `" g% k7 Y#include <linux/leds.h>
, m# t6 O& {) \; I/ c* G6 l#include <linux/platform_device.h>
7 ]7 F) q4 m$ G
( e5 h% H5 q# c#include <asm/mach-types.h>3 U, Q$ q7 a9 M5 \- d
#include <asm/mach/arch.h>
3 Y/ r, W3 a4 b2 p- K+ i#include <mach/da8xx.h>& O' A0 _& l0 g! _9 [$ f# ?) a
#include <mach/mux.h>- X' N) v. d6 j' _

" z8 @, _7 c6 @1 o* e& N#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)5 W* ?5 u- v# h, I0 d6 F
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)' S  ]7 X. l8 L2 A- s7 P8 v
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
) k3 t# |" V; R2 ]4 |4 x#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
! o# V! s# d& R' b2 U0 R4 x! w
) k# N* t) n5 w0 o$ v/* assign the tl som board LED-GPIOs*/$ @" y* o1 V  \4 @2 C! F+ S4 O
static const short da850_evm_tl_user_led_pins[] = {
% F9 R( C% |5 L- L* w1 G# ?  X4 C        /* These pins are definition at <mach/mux.h> file */
$ b+ y5 A$ M1 B) @& w& j        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,4 n' u. \+ ^5 H  ^0 e" ^
        -1
' C3 `+ @' O) v" N( D. R};
' h1 ^5 }( g8 X) w5 t
& Q$ v" O$ ]5 ~9 [, Wstatic struct gpio_led da850_evm_tl_leds[] = {
0 ^* z! D& |: B2 j        {; [8 c2 x8 [8 ]+ Y0 P2 A8 F- n* }0 g
                .active_low = 0,
  b& }* ?- ^5 \& Z8 x! T$ ]5 K                .gpio = DA850_USER_LED0," m+ c1 d- I) X5 U8 e
                .name = "user_led0",
3 S7 U9 k( g% [& X                .default_trigger = "default-on",
4 e/ t1 x4 M0 A" s7 F        },
  @* e# _3 ^4 z! g8 a1 L; G" p        {; x9 d) H' e  }1 F9 X0 w4 |3 G+ ]' \+ f
                .active_low = 0,
: [7 h8 M; f9 \- |, m& {                .gpio = DA850_USER_LED1,
9 C& U8 i6 T* t) S$ K                .name = "user_led1",
) B% m1 \$ L# w/ Y# i7 e) _8 P/ @9 z) V                .default_trigger = "default-on",' t+ g/ O9 C7 q+ m2 k4 Z& M
        },
+ u5 C2 ]5 Q; b        {
2 ]1 B. B4 {- V2 r, v                .active_low = 0,
( A, o6 J8 M" i: y8 V# H. Z5 Q  s                .gpio = DA850_USER_LED2,( m4 X* i7 Q  v3 }
                .name = "user_led2",
1 I0 p+ F! w6 c% |! j, U0 r                .default_trigger = "default-on",
& x7 c; x: s. L6 Q        },
! a3 C* a% H$ I        {. e8 N/ B4 D2 Z* m$ B* U( n
                .active_low = 0,4 h* K; I+ `, I2 @: B
                .gpio = DA850_USER_LED3,
" N( r$ g, Z+ t                .name = "user_led3",
0 S- ~! n- ?$ \8 I6 Y* {8 T0 Q                .default_trigger = "default-on",) I0 a, x/ N9 j& V7 B
        },
! u; N" N" c9 P, X};$ s, `2 Q2 G& |- w8 c
$ ^/ P5 Y* J- W. E
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {, T+ u, V, N  s: k% {# k" q
        .leds = da850_evm_tl_leds,; s- w; g4 T0 v: ?9 ^7 u
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
; i7 q% P( d  g3 n# _+ T- x};
% m' o4 [! X3 \3 d3 s5 V. }5 c% u" z4 g2 ]: Y7 D' p! l; x# n- O
static void led_dev_release(struct device *dev)  y5 S" C, o1 y3 ]. b
{4 P* t8 ?4 {, V6 {3 f! F. J) S
};
! A- I, v: {4 t+ E* _6 P8 \- z: }" C! Q
static struct platform_device da850_evm_tl_leds_device = {, V& g6 R, n, [# S" s" Y) w
        .name                = "leds-gpio",
3 w$ u/ z+ A. I5 b$ k        .id                = 1,
4 D5 O: ]0 d2 R  x3 s        .dev = {
* Z  I, g! s% h# i                .platform_data = &da850_evm_tl_leds_pdata,! A1 o+ i8 c2 f% f* _6 {
                .release = led_dev_release,0 Y- Q( Q: d5 f4 q  O5 ^) H
        }
9 x9 m( w! O6 m6 S# T};/ u6 X+ B- c2 e! [4 V8 ^" l- l
& E* t7 ^, f. f, }1 ]9 Y
static int __init led_platform_init(void)
. _) ?0 y# g: x# E& p6 U" U{
% Y4 u0 F$ K' a- X  n* R# ^) }6 ~        int ret;
; d! P9 S7 A$ \5 h- |6 S% {! H#if 0/ j3 W2 o: }6 a$ J8 o" `
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
7 ~. p3 W( z$ ~& M6 }, W5 X! q        if (ret)
0 x4 p6 q$ E$ A) ^" b& [7 B3 q                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"! r8 l5 e) k/ |; u! V
                                "%d\n", ret);# u% O8 |  E* u# r
#endif4 V4 f  z# F$ q7 p9 |( J
        ret = platform_device_register(&da850_evm_tl_leds_device);
7 d  [  b: _5 S0 _        if (ret)
' ]: o, S+ I& Q! n. r' K' u. @                pr_warning("Could not register som GPIO expander LEDS");( p6 D6 A3 S- u5 w$ `
        else/ Q" {. `% B0 {% E* ]
                printk(KERN_INFO "LED register sucessful!\n");" q5 {8 f4 [7 l7 X# F  e. l* v% V
' M3 n1 U( W* L/ J. k- `4 I8 B
        return ret;; ^1 F' q0 R5 U/ z& q( d( J3 S: ?
}! Y. T' j& R' z; [! x" p. Q
9 g) t2 x5 x. N" m. z' t7 q
static void __exit led_platform_exit(void)
" N: Z2 W. V* @7 W9 K3 [$ J{5 T! c. d! S* O: p" e' }' ^2 v/ ^
        platform_device_unregister(&da850_evm_tl_leds_device);( w6 a+ X5 y% \8 Z' J
% `. M( Y- p+ Y5 S; [
        printk(KERN_INFO "LED unregister!\n");
! p8 `8 p( }1 [) Y- k1 Q}
  {% f" M2 G& A: {; J3 r5 K- Y' G0 @; W
8 L- i0 o% O3 P; Y. I$ Xmodule_init(led_platform_init);5 L- C9 W& ]" Z6 B
module_exit(led_platform_exit);7 `7 a4 j: K' S! Z9 C9 d' I
( T* g" g. ]6 @
MODULE_DESCRIPTION("Led platform driver");$ e  C) ~( J. T0 b9 L5 G% @# s8 q
MODULE_AUTHOR("Tronlong");7 e% T8 H& s( U6 v
MODULE_LICENSE("GPL");
. u7 ]2 l" c. k3 w: G7 x: A9 e
0 {( ]4 k8 a/ A# {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 06:42 , Processed in 0.041261 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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