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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。! j9 S# V5 J( t. D3 p, Z' E- V
#include <linux/init.h>) M! R+ T& D3 Z
#include <linux/module.h>
# @, [; ^+ u  k- _: ^4 _+ T1 K#include <linux/kernel.h>
& `8 @1 K( b' |  r/ j0 o6 f3 G#include <linux/types.h>3 M& \5 `* Q: z5 v+ O/ n  B
#include <linux/gpio.h>
( D) {9 S9 P3 \/ e- l#include <linux/leds.h>1 |. N6 w1 Y9 ^2 k% `; n( y5 {
#include <linux/platform_device.h>' M9 B5 d- ?2 {  n  s
! t6 E: w# \' Y, o4 \
#include <asm/mach-types.h>
( x/ T4 A, M  s  \" V! w* t- O#include <asm/mach/arch.h>
: N$ Q7 ^; D2 _. A4 y# B7 a* T4 Q#include <mach/da8xx.h>. H9 ]0 T. l* k& b8 ~
#include <mach/mux.h>
/ h* _* W; O) I$ _2 M; J( C# l/ h8 y+ e3 H: A- h* o" t8 J
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)" d, {: _+ H7 j& I, m
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)+ d; ~0 O3 U: Z3 Z- B
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)' u4 \$ |. R/ b. m
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)8 f% R1 D! [3 K# ?& E1 ]; S! c2 J

/ `( X6 ~7 @. R3 {/* assign the tl som board LED-GPIOs*/& F4 G6 g& q  R3 y: o% l
static const short da850_evm_tl_user_led_pins[] = {- z. U( d  u* w1 i9 ?
        /* These pins are definition at <mach/mux.h> file */
1 M: F) B; j5 R% h$ \* P, x        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,$ X# W3 w4 I) \- N! b
        -1: Z1 k) D: _# Z8 Q
};; }' X3 z' W! V5 O% b0 O5 P' w% m

5 C7 s/ N, E* D+ a9 P, n) Astatic struct gpio_led da850_evm_tl_leds[] = {2 ~) C9 e$ p" v
        {
8 i5 y% s6 I2 ?4 f5 _- g4 c' X                .active_low = 0,& ~4 t8 t& X  Z: {! v
                .gpio = DA850_USER_LED0,5 y' n0 T# l0 {6 G( @2 `4 Q
                .name = "user_led0",
) V- z* |1 B! B' f7 @                .default_trigger = "default-on",
7 i/ F% v, B% L6 s1 y# C+ Z        },
" x% f3 n" |8 u; c( b        {
4 r# e, W5 ?) T! {$ \; ^5 l                .active_low = 0,/ O. }+ p& r: |; K  L: A; e) i
                .gpio = DA850_USER_LED1,
5 k0 k& T# Y, H, \' l5 t4 X- Z                .name = "user_led1",4 K, b) |) j& Z! l4 g2 V
                .default_trigger = "default-on",% S! n+ ?& r$ s* Q9 ^& `- y+ T4 @0 p$ T. D
        },* G4 J6 p1 `/ w* b
        {
) f: `+ o) o$ q                .active_low = 0,
/ A8 _4 g' s6 D4 A2 v7 I                .gpio = DA850_USER_LED2,
6 f' d# _3 F; k                .name = "user_led2",& B" m9 _  `+ Y3 K
                .default_trigger = "default-on",8 W7 x& ], P& Y* i4 A
        },' X% B! l5 ]* a7 R- D/ W
        {
' @5 r' w( k/ o+ p: |. \+ V                .active_low = 0,( R+ B  B' S2 D$ q- L
                .gpio = DA850_USER_LED3,0 t) n& h- a. {* k
                .name = "user_led3",  o1 y$ J5 Y. g, ^" R
                .default_trigger = "default-on",- I$ ?$ e, s  ]$ O# C
        },, {+ i- U0 Z1 i% n, H. ^
};# C# B1 q& A& A  k. {$ h# L6 j% z3 H
3 @2 e: t, [8 S- C3 c  V) k
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {: J; I7 U; O5 j$ x6 |( m" k
        .leds = da850_evm_tl_leds,4 v9 U. l7 T, e- T7 D* Y
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
. P* D! ]6 X: [8 E1 O) L, c};
+ ~4 ^: m( P; c: H) R# f# L( m* ^+ j
static void led_dev_release(struct device *dev)
8 H# f  y1 {& M2 B; Z- V{
, K% O: q2 Q% {( L1 Y4 n  @};2 b& u* G0 b2 a. j/ u) H) t) o
5 F- R1 Y+ r/ m3 y2 \6 f0 u
static struct platform_device da850_evm_tl_leds_device = {
0 @( P3 I. {* Z  W1 U  P, T        .name                = "leds-gpio",8 x- z, M# u# T+ ^9 M4 t! h
        .id                = 1,
, T; G  Z' D, T' M, N) F        .dev = {
  ~: l4 O1 i: v8 I: E! f% E* n9 l                .platform_data = &da850_evm_tl_leds_pdata,: Z6 l; k6 D; x, e
                .release = led_dev_release,5 D9 J; v8 J2 y9 n
        }
8 p! D5 t) x+ m" E$ F};7 A5 o, {( j9 N( Z( F
1 }$ R. w& Z7 b; Y" J
static int __init led_platform_init(void)+ j& h6 z/ ?( s
{# m2 t7 b) T* @
        int ret;
" ?! p$ F5 E0 r/ ^, `! {#if 0
" s! c" L" q2 S. P2 u        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);" h3 t4 ^) y: B
        if (ret)& y6 W# t( w7 X3 w& l
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
& C, p4 n/ q! s; ?+ L                                "%d\n", ret);! o$ ^; o4 Q* ]% [
#endif/ D. X) w# G1 Z! e( K
        ret = platform_device_register(&da850_evm_tl_leds_device);
9 h% h4 E0 g0 b% Q        if (ret)1 a8 [% X6 G3 P) t# q
                pr_warning("Could not register som GPIO expander LEDS");
0 f& y0 ~) b; {( R        else# N; w& Z6 v; f0 p, U! k
                printk(KERN_INFO "LED register sucessful!\n");
5 ?8 }0 i! z- |  [5 X* t& }6 |. B  E' k  _7 U
        return ret;
/ b5 g& P$ S9 \5 W- Y9 m( j}
7 e' r5 j# R. q+ m; O3 _$ @1 v: l0 X2 c" w$ g3 Z* S1 @) |/ {
static void __exit led_platform_exit(void)
! k7 |9 L  Z# j; n# @0 i9 t# \: O2 x{  C7 L4 ~3 ]! A- I! t
        platform_device_unregister(&da850_evm_tl_leds_device);
5 L5 l: Q4 |5 J0 a  m" w/ [& L/ _) U
        printk(KERN_INFO "LED unregister!\n");9 R, h' ]- C4 j- t+ J. H) m
}; _1 }! {8 e% c# @

$ p: g9 g, |$ d! _2 r9 q" qmodule_init(led_platform_init);
4 g9 f$ H6 V2 ?* E: ?7 J( J* Jmodule_exit(led_platform_exit);
! _; e# M! I5 ^' \
, C& w  [$ E1 MMODULE_DESCRIPTION("Led platform driver");
1 N" ~9 R1 B  P9 [8 b5 tMODULE_AUTHOR("Tronlong");
* J- p8 D8 E' u: [- {/ @3 G2 WMODULE_LICENSE("GPL");
0 }# C' z* U8 ?. M; V1 h3 `) y. e. ^- ~4 B! s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 09:42 , Processed in 0.041429 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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