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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。0 N# p# M) ?0 Z( J' l0 ^. h
#include <linux/init.h>
, C3 ]3 X6 V* c, T( s* t#include <linux/module.h>
3 R# X" e5 V% |) I; k& }, V% ]#include <linux/kernel.h>
2 Y0 ~& Z9 \% n* p6 ^7 \- @( O7 J8 ]#include <linux/types.h>* a2 F3 t2 R0 d0 n3 c! y; P7 P; N
#include <linux/gpio.h>
) z. e* _. h. Z#include <linux/leds.h>9 K" ~: ]* K: m, I1 y1 Y
#include <linux/platform_device.h>
' d0 v% v2 U0 F2 V
% L( C5 S3 }* v% z7 W. X+ ]3 Z  ~#include <asm/mach-types.h>
) w& ~, x' m1 D7 ~7 I#include <asm/mach/arch.h>' d4 y+ m1 `; M; N, }# j7 \( [( o
#include <mach/da8xx.h>- ~, O4 ]& R6 n* D( c! i
#include <mach/mux.h>/ O7 R1 c# N8 X- X

0 X' S& R( N' H#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)/ z# d& Y* e6 L9 p  T
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)$ X# F+ l- w/ z3 ?* y4 i
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)% a2 Y" @4 t$ U; v
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)7 P" D& k! ~0 S; N

; W1 J9 K/ ]/ ]) A3 K! T  i" Q/* assign the tl som board LED-GPIOs*/
. q5 e, n& k& hstatic const short da850_evm_tl_user_led_pins[] = {  y0 P3 n8 n) k' A5 z, p0 V
        /* These pins are definition at <mach/mux.h> file */
- y3 G+ |  `1 v3 N2 \, w6 ^* j        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
, m5 i5 x7 _. c        -15 X6 i- F. {) M
};
( n& [. ^1 ^& u5 M7 ~* |( W
/ }$ K% {, |! N$ f1 wstatic struct gpio_led da850_evm_tl_leds[] = {
( c/ [1 W9 Y% S7 g$ L5 W% q        {
" ~9 z0 t/ m1 z8 H4 ^8 S/ T                .active_low = 0,
+ @) u/ Y, ?2 B+ S$ ^9 G                .gpio = DA850_USER_LED0,: m7 }5 }& g* w; s7 g8 A& @3 U
                .name = "user_led0",
6 d! n; {; |5 f. c+ n" f                .default_trigger = "default-on",$ _% D6 T" |5 [9 s: a  Z
        },; L+ x8 E! q3 L9 o: @* [" e
        {+ G. E' L: c9 q% i1 u, W% N
                .active_low = 0,
* |* q, E; X+ L2 _$ L0 C% \                .gpio = DA850_USER_LED1,+ o6 F- }( z/ ]* a9 R6 Z
                .name = "user_led1",! |6 ?$ B! W" V0 i. b+ _* @+ |
                .default_trigger = "default-on",' O. x/ Z7 T+ X' o% `' B) n1 k
        },
8 t1 j' S0 B: O% B        {
' }" z' [( K+ n# d- b0 e                .active_low = 0,3 L+ V: `0 o$ N. ?- F+ Q( F0 e
                .gpio = DA850_USER_LED2,7 i  C& S# Y" f- c6 y6 m
                .name = "user_led2",6 L% U  W2 m: F4 n8 V7 Q; Y
                .default_trigger = "default-on",! g6 P2 A# d/ j) W6 T
        },  B) I  Q5 {+ A7 l9 a
        {% ~5 W* [2 [' @( k. R0 d8 O9 o
                .active_low = 0,
5 z/ W5 @3 Z& n! |9 A/ S6 y  E* V                .gpio = DA850_USER_LED3,
! @: @& U2 k3 |) T                .name = "user_led3",/ t3 x/ i+ x' C( X
                .default_trigger = "default-on",  g4 X) E1 ^5 ]$ O: Z: U! Z  u
        },
* v7 o, v, [& ]0 [9 I% J};' V7 s5 ]8 P2 h- v+ w8 ?+ T

) X. N/ h( H& L) C/ w! Z" f7 `static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {4 ?/ R( z7 d; S' v; r2 A
        .leds = da850_evm_tl_leds,  f; M8 e; i0 Y$ W7 g& w
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
" a0 l; E0 p1 n# @3 @. Z};& E' a$ [3 d' `* K! z

' N# L1 j" F# P) V  pstatic void led_dev_release(struct device *dev)
, |- w1 I) ?) _# J7 P  |( N# `) O# ^{, o5 {. w  z! A- _2 J' x
};
8 a9 w$ X3 o' \% X( C4 p3 W; N3 {8 q5 t& b* M) l/ q( Q" b) l
static struct platform_device da850_evm_tl_leds_device = {
/ i' J  U& r3 s* c$ t        .name                = "leds-gpio",
7 h1 U1 r9 E" @- X! f/ o        .id                = 1,
9 Y6 k4 D: L$ F2 Y% m0 ]( ~        .dev = {* I& h3 Q6 M; o6 b
                .platform_data = &da850_evm_tl_leds_pdata,
5 ]* `9 Q8 @% K$ j- F. P                .release = led_dev_release,* ^  D; F  e8 u' N7 A0 D8 V
        }* L/ M+ I3 {/ w0 z0 m0 z8 ~
};$ Q7 V+ ?; H5 s: t
; b) z9 @% e! g9 S  p- p4 [- `
static int __init led_platform_init(void)
7 f/ W* T+ l. q7 [) }& U  A{9 ?# u( B" \6 t; a# v  ~2 Z
        int ret;
' K5 @  z3 f1 n' Q! {#if 0+ t' Y8 r8 Y$ y* \# w5 K! T
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);' t/ l( h  e# z9 F
        if (ret)
! z4 e0 V0 g( {9 Z0 b, J                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"  d$ w0 u9 i- K$ P% S  r' d
                                "%d\n", ret);
& r/ Q4 G4 F) }#endif
  G4 N9 g" C, O9 l/ u        ret = platform_device_register(&da850_evm_tl_leds_device);
6 A# n" b" b2 ?4 _4 b' E' q        if (ret)* m7 Q& n4 x8 N" k- V# v
                pr_warning("Could not register som GPIO expander LEDS");- [' p6 Q" K* p
        else
5 c; V5 g: [( r# @+ d                printk(KERN_INFO "LED register sucessful!\n");
- u! `: w$ \* R' V6 b7 k1 [. u) g! U" D- l* \+ [8 C
        return ret;
9 b: h: |% M9 W: C}) {+ w4 H1 P' O* [4 |# b
7 ?# E7 }5 W" {5 v
static void __exit led_platform_exit(void)
0 A, j5 _/ _& U{
; Z1 J6 E. P' h, ~        platform_device_unregister(&da850_evm_tl_leds_device);
9 }3 e% U% Q/ T5 w5 K  O6 I( U/ m4 ]: d. q3 p9 C( A6 S1 Q7 x
        printk(KERN_INFO "LED unregister!\n");
: Q; W' D" E: Z  ]9 ?# p. r! x! }4 @}
' e7 M# ^! Q6 L6 G, Y" K# Q( \% d0 X; D( g$ U0 r
module_init(led_platform_init);
4 ?) s4 H+ P9 x. W& `1 xmodule_exit(led_platform_exit);) y  q& Q! R& F
9 x8 |0 K4 Y8 E7 y- w7 F( p1 @
MODULE_DESCRIPTION("Led platform driver");7 b  ?; C/ o& B# |  @6 z
MODULE_AUTHOR("Tronlong");
" s4 ~: P" Y; d3 BMODULE_LICENSE("GPL");
/ m  T) X: P+ M1 ~, P" S
2 S3 g, ~* y+ ?  `4 N/ `, @% o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-4 16:50 , Processed in 0.046610 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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