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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
: G: `) A- B/ s7 }, {+ m/ K$ i#include <linux/init.h>6 p4 y5 j( G% j
#include <linux/module.h>: I' ?  A+ y6 F$ V, p- }
#include <linux/kernel.h>5 D/ y! v& w, y: y
#include <linux/types.h>  z$ v1 H8 z  ^
#include <linux/gpio.h>
, T1 \: f( O' s8 u$ q! e2 }#include <linux/leds.h>
3 N2 H: s" q/ O  K#include <linux/platform_device.h># l; O) t1 R' n5 A+ p: f
& s1 A8 J1 L, u+ g# m
#include <asm/mach-types.h>$ Y% @( p9 \9 A# l, W
#include <asm/mach/arch.h>
5 k/ I0 m; M* t# Y  T#include <mach/da8xx.h>" ^( Q% W, l. }7 S! Q
#include <mach/mux.h>- m8 v! @) {/ y; S* G! A

4 B" u4 _: ^' G- _2 X#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)' W3 c( X9 G4 h& {2 X
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)- P' b7 r/ L; T: P8 z( w
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1). z* b1 P* z8 B) r2 j9 y/ x0 U
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
% d6 V) ^+ y! E" ?+ e0 f0 Z9 X& N( l$ G
/* assign the tl som board LED-GPIOs*/1 D# O3 Q. t" i5 d/ i/ r' m  [1 X
static const short da850_evm_tl_user_led_pins[] = {
" ?, M3 e: q* M        /* These pins are definition at <mach/mux.h> file */
8 j4 X: e1 ?- R* R7 g        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,' p; }) w& I, U. H
        -18 D' p  ]- R) G
};) c$ r7 {! J  H! }3 H1 e
7 @2 k9 H, |& T
static struct gpio_led da850_evm_tl_leds[] = {! l+ [# J  c& N2 ~9 O" x
        {  m+ _. @$ F, z7 h) k
                .active_low = 0,
4 M& l5 n+ M0 @+ z9 H                .gpio = DA850_USER_LED0,
0 M- S: H( ]2 g) ^. I                .name = "user_led0",) K3 ~4 Z: W! A! ?
                .default_trigger = "default-on",
! r1 x( b! ^3 m9 X3 C2 Y' z# v' \" E        },8 q8 j+ e( _# Q3 F: X
        {9 g; c/ l/ v# M
                .active_low = 0,* q2 r# l' p. |# f
                .gpio = DA850_USER_LED1,# R0 K$ z+ W+ q7 P7 D- D
                .name = "user_led1",
+ V! Z/ C# t) L) F6 @: I7 I                .default_trigger = "default-on",  }$ C' X+ G3 W0 p% l/ B$ T
        },6 O' D; y8 ~- r+ Y# F
        {
" H# I, b) d: g6 A                .active_low = 0,
% ?2 t7 t: a/ m$ N, H                .gpio = DA850_USER_LED2,
% y0 b3 q" P. W& S: u3 {                .name = "user_led2",/ H2 i% m. |! b# T8 h  [+ J
                .default_trigger = "default-on",
2 k# ^: x+ ?! {8 D8 x5 w' H        },3 L0 M+ f7 C7 ?0 k+ _/ p
        {
# ]( n7 A, U" [3 Z, Z6 O+ n, g                .active_low = 0,' U* z$ S! |' |( n- b6 S* G! n
                .gpio = DA850_USER_LED3,
# W; v; r" x$ {1 C                .name = "user_led3",1 q9 F4 H! i5 f0 _0 F' g
                .default_trigger = "default-on",& ]) X, l  ]* x
        },
& D* C7 e( N3 d};9 u) y1 ^5 O3 e8 H( g

" s; ~2 o! H- a" h8 @static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
  v% F% b" t0 y" n. N  w        .leds = da850_evm_tl_leds,/ X3 S/ y$ X3 r8 ]0 f8 f& Y
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
9 c# j$ D' b! z& w4 o* T8 u1 z) O};1 ^8 Y. L/ f/ i) D5 E3 T1 Z

4 |) W/ C! [" o3 T" r- ?static void led_dev_release(struct device *dev)
: O1 |# W9 c6 E  s) {8 V{
( T4 ]& _1 H& l/ z8 ^/ }};( N' h# o7 |. t) Y7 C5 @' Q% Y

6 D# o. C  `0 ]- b5 Y( Kstatic struct platform_device da850_evm_tl_leds_device = {+ ^7 m+ D, |! x5 p+ D3 w
        .name                = "leds-gpio",
4 {5 y0 n9 D  j! `. r  Y/ H        .id                = 1,
1 }" w4 l4 w. _2 Z# e: |        .dev = {) n1 @$ z5 p% ?4 k3 j
                .platform_data = &da850_evm_tl_leds_pdata,
+ ~0 u, q/ r( a6 @. \                .release = led_dev_release,9 l' [  {6 j0 }
        }1 z  a8 W% @" u8 y8 b! z
};% T7 S: o2 C$ g  }# r; \

) T* C* |  X  x5 Q0 i6 ]+ {static int __init led_platform_init(void)
2 ^* U* \( E( N+ [{5 u: _" ]1 O) l- p8 E& M; z
        int ret;7 s( {6 a  J" I
#if 0* h% u1 k1 N' Z1 N7 P& E
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
; }$ ^# n; T. r0 r& t4 k        if (ret)
4 v2 A' ]6 U# g. Y                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
. F9 G( r3 Q. Y# W( v' E                                "%d\n", ret);
- }* m1 x2 _4 f7 p#endif
  ?5 r8 x' M0 a& Q. d- D0 E* Y        ret = platform_device_register(&da850_evm_tl_leds_device);
. m3 j7 \/ k- Z9 d/ M8 ~! W: S        if (ret)+ ?( o1 p/ w4 V# z( R3 d; f
                pr_warning("Could not register som GPIO expander LEDS");1 i$ X$ L  U  M! `
        else* G8 Y1 C7 a2 s2 A, u( k
                printk(KERN_INFO "LED register sucessful!\n");
/ v" h0 [7 e0 e7 u  y0 B, w: D3 N) {5 J' D. `1 B. [# x
        return ret;- }3 E6 Y4 K: ^/ X8 ?& [
}$ C7 k/ r: r6 H: U7 j% {7 [

+ F2 k8 a4 D4 P! Xstatic void __exit led_platform_exit(void)6 M& |8 L$ B2 g2 W: f$ ?+ g
{
! F& s/ S- O2 B9 w3 r        platform_device_unregister(&da850_evm_tl_leds_device);! o$ O6 V' ]& i* |) ]6 b  L

# v; |5 x+ |/ W2 V: M        printk(KERN_INFO "LED unregister!\n");1 o& Q. I2 L) Z" [: `2 f1 ]
}( i. F, b- }: M; o% o' M" q! P

) w& [' S1 ]8 ~4 Smodule_init(led_platform_init);0 {6 q# p  d. x& c' l( q
module_exit(led_platform_exit);
' f9 e; w$ j: [# m% `+ T1 d0 P
8 \5 E& Z8 R) Y9 H% v3 _9 R  F( sMODULE_DESCRIPTION("Led platform driver");1 R- B/ K2 U6 {0 h+ y: Y: e
MODULE_AUTHOR("Tronlong");* z6 r7 {0 B. K3 M$ N* Q
MODULE_LICENSE("GPL");- {* v# U/ V$ T' a' i# X

- w) R& P* e, k! j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 21:49 , Processed in 0.039256 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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