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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
, \, i: C- x7 _4 ^3 `/ m- X7 F#include <linux/init.h>+ o, j% [- F6 M% S% Y( ?
#include <linux/module.h>
$ I+ e& f# C# j9 h" S#include <linux/kernel.h>/ S* |9 p0 x0 U& ~+ T3 f- e
#include <linux/types.h>
- l& ~: g" ~9 F" G! M3 Q#include <linux/gpio.h>
0 S6 P( j' e' y" u  T6 w) e#include <linux/leds.h>
+ }8 h' e  s9 L) F#include <linux/platform_device.h>
  N3 C  v7 p) v9 [! V& f
  @" n5 d! K/ D( n/ A#include <asm/mach-types.h>
5 {! A( l2 X* d" p% y% Q#include <asm/mach/arch.h>
2 s  Y& d  w- u' m' {#include <mach/da8xx.h>
; t& R+ R) z* b1 r#include <mach/mux.h>
/ d9 {1 a& Z$ k& j* D& l* z0 P  t5 J9 u* J9 D
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
3 y8 Y$ K, q, U. H' i#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)5 g( z# {% g/ U
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)0 S* v  k: R3 p% R: X4 [
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
( A9 ~* c+ t5 L1 p; Z% P
4 A! _6 K8 D3 G; [/* assign the tl som board LED-GPIOs*/. U  R3 C# b1 B! h2 c
static const short da850_evm_tl_user_led_pins[] = {% U( T' X, w$ Z: X# {$ ~* d+ s1 y
        /* These pins are definition at <mach/mux.h> file */
, K* u5 t. B: |' r2 j6 w# M        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,1 M3 j1 P) m# n; Y3 n5 Z
        -1
$ [: e/ S+ u2 j* m# C2 I, D( e};" q3 ?' E* }+ O# |7 i1 o9 r
# D$ }2 @! z4 b% ?
static struct gpio_led da850_evm_tl_leds[] = {/ J) ^9 V6 H5 j2 X- p  P- U5 N
        {
  x* c6 y* `/ Y$ `/ j+ `                .active_low = 0,. }8 H6 c' P% E2 o6 q
                .gpio = DA850_USER_LED0,- o  W) B% I) c; Z& Y! o
                .name = "user_led0",
$ ~$ S2 s/ p; |. L                .default_trigger = "default-on",
8 v9 ]  j6 i) |0 E, v, C% t1 M        },
7 _! \2 q% p3 n7 c8 r        {
8 N1 ~0 O0 c& J8 t( R9 Q' t                .active_low = 0,) r# r% O* B0 s5 ^4 R
                .gpio = DA850_USER_LED1,# d1 ]( G, V0 w! Z* O( }$ B
                .name = "user_led1",6 d$ `9 v3 n% b- c7 U0 W
                .default_trigger = "default-on",1 }( \% J% Z8 X- K
        },
' G, r2 Y1 b4 a; X5 C, X& }( ~        {# g( d$ U1 w! {: ^
                .active_low = 0,
. `( I1 p6 D7 w. T                .gpio = DA850_USER_LED2,9 Z0 ^1 e- q$ B' g. j, l. r
                .name = "user_led2",: g6 D7 H: O3 V4 S# f6 N( C' m
                .default_trigger = "default-on",7 V* L- _; ~, X& _. D4 H; e+ |  g2 }
        },
" B% W9 t6 T' }8 I# T: g        {' z0 C4 A4 {- W6 \( v3 P
                .active_low = 0,
' ?: g- u7 P2 P4 @                .gpio = DA850_USER_LED3,4 J. G7 |( J4 y  i2 ^6 _( \
                .name = "user_led3",1 a% d' H) }) t; Y1 }
                .default_trigger = "default-on",
- [% j3 p6 C5 |- ]" b7 c        },
3 H8 i7 Z- k/ D& Y( W- x+ Y# l};7 Y3 W; G0 j  y) R5 T) ?

" w1 _3 m# [. c- [static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {" O) Q% j1 N, s$ A3 J+ l2 y$ t4 w! u
        .leds = da850_evm_tl_leds,7 K8 p9 G$ ]8 V# f2 L
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),1 X* |3 C2 m, Q( u& J2 a
};7 U& h6 `& G7 Z, x: K. l

6 o6 X: S4 M# B: d2 R5 ~static void led_dev_release(struct device *dev)
) z2 b) j! z% s6 B8 m( G{
; ^6 m7 z2 v+ j6 }$ R; g$ B};! ]% J5 R2 E: n: c2 h5 t& \

$ a. ?5 P( s0 e( E2 g" f; kstatic struct platform_device da850_evm_tl_leds_device = {
/ C" s' g) W$ b. h' B        .name                = "leds-gpio",
0 N9 C' d4 A+ X        .id                = 1,
! q% c9 i. \$ z# n        .dev = {
; [( G  d( Z- b8 t                .platform_data = &da850_evm_tl_leds_pdata,& }- p. P. y  @. F/ M
                .release = led_dev_release,
4 d( q) N/ B' Y: u, S" B        }, f, r7 q' t  w9 J; u' t  p( o
};; W" Q/ L; J/ t# S7 J, c
% i) A5 y. A9 q! t. R
static int __init led_platform_init(void)
4 B/ x8 I9 A2 G* Q$ u" [+ R6 E( C{
7 g, L0 \( d" g, q6 |        int ret;
3 h8 F; ?! W2 z6 G0 O6 R1 w#if 0
! n5 `/ i- u) C( O$ l+ h        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);' R0 ]3 j% w, X* t! D2 I- Q. @
        if (ret)' ]: c3 E; F8 g6 i
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"' ]# b$ C# r1 b) V8 R6 [
                                "%d\n", ret);
  R; z( A! g9 W6 N#endif5 `7 o+ S* x" a% O! h+ S* H
        ret = platform_device_register(&da850_evm_tl_leds_device);
6 b. O0 e- F6 n4 _2 i3 R& _5 O& T        if (ret)
* |4 c" x4 C! ^+ V) Y( ^2 Y& x                pr_warning("Could not register som GPIO expander LEDS");0 d) M. g; v$ |' O' ]- u# X
        else
" ]/ J5 b1 `, x; p# w                printk(KERN_INFO "LED register sucessful!\n");
2 n; f0 A8 C( w0 X" |  I+ `' n' ^2 i, N- F( [
        return ret;3 o6 T, B8 G$ H  _1 n% W+ R
}- \& s5 Z3 i8 a- e% @2 G& B( i3 p4 |

; t) {9 k' x! s9 @static void __exit led_platform_exit(void)4 ], j) a, v; w! y' K: o1 V3 {9 k
{
- V- V+ z$ u% V$ _+ V6 P        platform_device_unregister(&da850_evm_tl_leds_device);0 t* g8 x8 G# N0 i
5 Y: q: C( S; a% S
        printk(KERN_INFO "LED unregister!\n");
/ [) c. C9 j% ?2 c8 y# m7 `}, k; D, b' q4 X, ~4 G1 P

$ i4 @1 C, t3 a$ t/ }" pmodule_init(led_platform_init);
$ a+ F% }3 M3 ?, o" xmodule_exit(led_platform_exit);6 V& |" }7 D" v  [

: E9 B1 x/ S7 ^+ |MODULE_DESCRIPTION("Led platform driver");
7 O) l- X" d7 x0 G1 b$ {MODULE_AUTHOR("Tronlong");5 U$ ]; g! Q+ G* {) X3 ~$ F
MODULE_LICENSE("GPL");0 N0 k- s# ]' U3 k; b

* P! t, ?2 V4 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-5 22:11 , Processed in 0.039864 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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