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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
; T* N! `- F! S1 G4 t7 W#include <linux/init.h>% o" `) Z! W& D
#include <linux/module.h>, U1 T$ K  R; l
#include <linux/kernel.h>
- E9 t  H/ [) K#include <linux/types.h>
! m; r3 h5 k! j% q2 h#include <linux/gpio.h># V3 }8 o, `) k& w; O4 f
#include <linux/leds.h>+ Q: m' |, X! d0 Z4 b: X1 G# x$ `
#include <linux/platform_device.h>: R: _) _8 }( I
. X  L: i# z8 W
#include <asm/mach-types.h>
5 U1 x, S! w; N. @* {#include <asm/mach/arch.h>/ [" E! q+ k  a
#include <mach/da8xx.h>
! B7 C$ I5 w7 K, P+ v- q" q#include <mach/mux.h>
  u  e  G: X5 F9 U7 v  k' B( E. W. R" P  J5 I
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)8 j4 Z8 k* a& o4 X: `+ a$ i
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)5 g1 P: j6 l6 s: K! {- y( r: m
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
% |9 X" I" P% ?' x4 n. G#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
0 @, K( K1 o6 c) o; c
6 {) y  E1 t) i. w+ R) e/* assign the tl som board LED-GPIOs*/
) l. K. [( G/ cstatic const short da850_evm_tl_user_led_pins[] = {" {6 x+ R# B' O! |& b1 n" F) r
        /* These pins are definition at <mach/mux.h> file */) e4 z' D2 k( N! ~0 \
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,2 n& l  x8 m; |! G/ f
        -12 f; X" q% U! ~3 g* }  F8 F
};$ |. |, A) {9 v  k

- @8 l) F+ K0 l# rstatic struct gpio_led da850_evm_tl_leds[] = {- j: ?! h- l0 b. y% F) Q
        {
3 v* W: M* y2 v! b                .active_low = 0,
+ F! A0 K( o- F$ s& Z0 L0 _                .gpio = DA850_USER_LED0,
0 Y' A) k5 r5 z" A7 V                .name = "user_led0",8 y2 j" I; c/ x! b2 g+ u
                .default_trigger = "default-on",
4 f! X! m* B3 J8 A. W% i3 n        },
; D& o- P. q6 {$ z. @  h        {- t+ ]% E* M& `  {' \5 U: j& K
                .active_low = 0,
* r% ?2 F; z8 _1 ~6 t                .gpio = DA850_USER_LED1,
$ h! |8 K5 c% x) E& s; N                .name = "user_led1",
5 B8 j" J. e- l2 |                .default_trigger = "default-on",# U, \8 B0 w$ _8 a- o! f" G
        },+ p! ~  P+ T! q5 {" c$ `) g
        {
8 Q8 C) ?/ n( u  B! n                .active_low = 0,
7 d$ S! _6 q  z4 R) |+ A% u* Y                .gpio = DA850_USER_LED2,
8 i, M( ^  _4 r& m% a                .name = "user_led2",
6 w  h, _7 W/ \' W9 J# _4 e                .default_trigger = "default-on",
& A6 i* D$ k& Z        },8 g7 G3 O1 q! o& l/ b- ^% h
        {
! _) l! u9 y( q; q) N                .active_low = 0,
# G( d; T" G4 _$ H                .gpio = DA850_USER_LED3,
4 l3 ^; ?+ D( j3 t                .name = "user_led3",
8 g' `8 f7 {1 h" t! H3 A! s8 V                .default_trigger = "default-on",) E0 ?! J5 \7 s. l* \4 ]3 q8 e: O
        },
( d0 j$ o* M- Y};
7 I2 `( E* q8 H) e( ]4 h; c- F9 s- R/ T  b/ O
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {1 `; @! F0 b" m( P
        .leds = da850_evm_tl_leds,
( [/ j: M3 @; R+ @9 i& a        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),/ D, L& v" |! t
};
+ x$ B0 |- X4 U  {% |/ Q; E6 T+ i- u4 Y" [( a% W* e
static void led_dev_release(struct device *dev)
0 G7 x& x0 T+ A{
% a( R: A  i0 m2 {9 U; x# H};
: O, r2 Q3 h. y5 m
0 T$ h+ d' g7 V) k; J, x/ a7 kstatic struct platform_device da850_evm_tl_leds_device = {/ N9 E0 `( N7 d' {0 \3 Z
        .name                = "leds-gpio",
4 Z/ I8 f& V9 `" U  V8 `        .id                = 1,
# f! t/ U. q$ K2 {        .dev = {
' J" j* I* n9 q  x3 n5 S) E$ o                .platform_data = &da850_evm_tl_leds_pdata,' @' S, P! t: Z& n
                .release = led_dev_release,0 C/ b+ k4 c. l' I( c
        }- |& u  Z0 ^1 d
};
# c7 W) K1 z  b1 ^6 j. L3 @! x1 i: f" |! J4 X
static int __init led_platform_init(void)% q9 u( i7 ^9 p2 p9 H0 M5 m/ ^
{
+ e) _- M. M0 E7 X9 ~        int ret;2 c3 b$ M  n: m3 Q/ {9 _% s4 o
#if 0' i  r! K( y8 c1 ~
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);9 H( B8 T: G! a, m$ o6 F8 x$ |; q
        if (ret)9 }: y. b- F! U( X- ^8 a
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :") l. |* K; ~7 Q  {- |
                                "%d\n", ret);
2 M1 u2 k0 W4 M- H. E2 Y# H#endif4 W; v/ \: x  Z/ b6 s5 O. h5 [5 f
        ret = platform_device_register(&da850_evm_tl_leds_device);+ A% D  I( C- @" n1 L0 h1 k
        if (ret)' i# q2 k, b0 g- d
                pr_warning("Could not register som GPIO expander LEDS");
) M6 s8 w5 }! S$ ~+ j7 D- q! f. L        else
" ?6 K1 s, n" k6 Z/ Q  D                printk(KERN_INFO "LED register sucessful!\n");
9 f9 e7 P! z, i1 a4 P/ |/ }/ _7 p5 @8 K8 A1 E9 G
        return ret;
- h- ?- Z0 D2 G- h$ p}
( v; ~9 k7 }! g5 w' B2 r" ~3 }$ C: T+ {1 s  b- w/ H5 O) M
static void __exit led_platform_exit(void)
+ N0 L; `# }9 c5 d" ?{' d! U7 D- B8 B7 {: M. c$ F4 Q
        platform_device_unregister(&da850_evm_tl_leds_device);1 B9 [1 S. i1 [9 W

* B; p' i, g( Y9 M! `7 y        printk(KERN_INFO "LED unregister!\n");6 \, X5 d+ w6 x& {# a1 ?
}# b( U" @' E# B0 G6 s! ?: p" _$ V

' d" ~1 H: {) n3 W( f4 bmodule_init(led_platform_init);/ D$ v: l6 I4 |% q9 A# w$ U! r/ l/ y
module_exit(led_platform_exit);
, ?, x  ?2 K, z: c/ l! j3 Y0 R6 R: O/ c) `0 Z5 ^. e
MODULE_DESCRIPTION("Led platform driver");
$ [4 P( F' U! o+ Z2 T, _MODULE_AUTHOR("Tronlong");
5 l! e( m& u; J$ M1 o3 D+ fMODULE_LICENSE("GPL");1 t. G% z% |5 [! x* R5 p; L

; T# w8 b* w* R* H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 09:21 , Processed in 0.038933 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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