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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
) x1 x- d2 p; y) v, j# ?#include <linux/init.h>
& Q6 u# S) k& {+ ?#include <linux/module.h>
6 U3 ]7 R! r5 ~  Z#include <linux/kernel.h>
# b7 G. H, R# M/ l/ J#include <linux/types.h>4 O/ c& F0 Q% k. R# K* V6 U! U
#include <linux/gpio.h>
  V( o2 k7 M% `% m! A#include <linux/leds.h>
1 y, @9 \& ~4 I2 o$ a) o& J- `$ c#include <linux/platform_device.h>
  ]0 Z) O1 X2 e! {, d+ d- w# j3 ^/ E
" A% s4 N# Y+ i$ g/ \+ S#include <asm/mach-types.h>7 u* Y. F: q" E. B) R7 R$ _
#include <asm/mach/arch.h>3 y5 r. `1 i7 e7 x( N" S" ~) H
#include <mach/da8xx.h>
/ W; j! m5 s9 S#include <mach/mux.h>/ d" V% V, V: Y- r- k9 h
% H8 t4 W* Q# c, c8 Y3 H
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)) w- Z, Z% w! t1 N# S' f- ]) m
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)6 y" C# \! h; C  W  t4 p* E
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
( B1 v( d: z# T2 }) P#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)  A& D% K" d; F" O
4 G; U$ p/ y& o
/* assign the tl som board LED-GPIOs*/4 I0 p2 I7 x2 f! R$ c3 Z0 U# i6 ^' V+ k
static const short da850_evm_tl_user_led_pins[] = {
2 U$ P4 ?9 t) V! X2 L  }6 b2 s3 Z        /* These pins are definition at <mach/mux.h> file */
& A1 r# Y5 q1 o7 Q& y, B        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
8 v+ f3 e5 D: k. Q        -1
" Q2 l! [6 n; b9 |; W$ [};
6 X7 u  x/ @4 j- E) R- T
/ h0 p2 X$ o0 I* L$ u1 u+ |6 h) @static struct gpio_led da850_evm_tl_leds[] = {, e; c- _( S0 ?. }4 ^: U3 k
        {: O* k, f7 p! x2 [( ~2 J
                .active_low = 0,* K; P/ A* r: S6 O/ f
                .gpio = DA850_USER_LED0,; t0 D* A% ]$ s/ ~# c: p
                .name = "user_led0",- }" {7 x' e9 n5 B
                .default_trigger = "default-on",
8 f) G1 x- ~2 W0 N  }6 q        },
. Z( @1 X7 R0 l- N( k& a$ o: f        {
) x1 O: U2 e, z$ ?& N4 |; W7 u                .active_low = 0,' }/ _, s! q2 m& c0 B
                .gpio = DA850_USER_LED1,
0 ], y2 Z3 N0 ?+ u! @; R; Z                .name = "user_led1",3 r! Y: V, N9 N) W. q6 u  P
                .default_trigger = "default-on",
& c) p' `  K9 {5 U; p; v        },: O1 J; Y9 o. Z) A* S& d1 R0 o
        {  @* U6 f2 D- S" K+ e# M' D
                .active_low = 0,& m9 s' y- R  \3 ^% r- B
                .gpio = DA850_USER_LED2,$ s' }3 Y. {, u. c
                .name = "user_led2",) U1 `% ]7 g- x+ w+ b+ V3 {
                .default_trigger = "default-on",/ U+ K, G/ o6 M& p% f8 x8 P
        },7 e1 ^2 m4 O- u9 R! a0 K; t
        {. R$ Z* a0 i) ?3 ^9 P2 f- M
                .active_low = 0,( r! b# i! q. `( O
                .gpio = DA850_USER_LED3,! i( {) F9 G$ x1 I% O0 ]
                .name = "user_led3",) h) K" o' e9 @( B5 N# F6 X# E
                .default_trigger = "default-on",
0 E  C' u! W9 g8 i. f        },4 Z! v* S: v1 B
};
  u0 M% D0 @4 e; q; A" k7 m3 {1 u9 Z. z8 ^; m
static struct gpio_led_platform_data da850_evm_tl_leds_pdata = {" c( c- @8 t/ {. V
        .leds = da850_evm_tl_leds,, S  Z- w4 |( S1 f+ Z7 ?
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),7 Y, P. t% K& s, U9 @4 J
};
/ R" w3 T3 r; h& A' u; F$ i. C3 d" V% Z2 j) Y
static void led_dev_release(struct device *dev)+ h  o* Y% O+ E8 `8 p" ^
{
( h: w. {- s: k. @, o( @};
4 X& G7 ^0 g: i9 H" z2 l
8 T* T( Y) ~  g4 H  a% lstatic struct platform_device da850_evm_tl_leds_device = {
$ S6 f; J: z. H' h        .name                = "leds-gpio",
6 \9 ?5 c0 i5 K* |8 r- J- G6 g        .id                = 1,
0 A! s" t, q: r1 S6 Y        .dev = {
; a* U8 `  L& C) _. N. v                .platform_data = &da850_evm_tl_leds_pdata,
! Q; L8 s5 k' u: N0 N2 }& {' h                .release = led_dev_release,* f" m! H2 B' _! b
        }
( R* H: R$ E8 V; T6 j; M/ p};
9 S) a: Y9 L- f& H; w4 b0 }. S
: G; v. b0 b  \; V  t" u% g- nstatic int __init led_platform_init(void)
# ~: u0 f/ b. }( Q0 ?4 t. B) u{' B" s) A3 W0 X: Z5 a
        int ret;
: t: `. f3 R: X& ?, e#if 0
# q1 y) `- M' B$ y# T7 V3 i  e0 D4 B        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);9 B( Q% L1 p8 O* d& [3 i4 U
        if (ret)
3 E% H9 j( r- t% C                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
' u& j( o: r/ Z3 R                                "%d\n", ret);
% X" {$ N0 G: @) N% Y5 m#endif8 T, D9 O" D4 |' R  Q8 U: y
        ret = platform_device_register(&da850_evm_tl_leds_device);8 q: E( s0 _) {$ b) U+ N
        if (ret)
# ~7 z0 f/ ?3 Q1 B; n                pr_warning("Could not register som GPIO expander LEDS");
1 {# F* C1 x/ }9 N4 e. ^        else
8 \0 }3 g3 E* [( z7 ~                printk(KERN_INFO "LED register sucessful!\n");
% ]8 n3 o8 o7 v% J: Q7 C+ V9 s0 E" N# s# ?  u$ A* v+ b
        return ret;
: b4 ~6 k1 |; f6 E2 I}
; Z+ h* u* J1 E: E$ V: _3 d
- b. ]8 L- E% C$ U) E6 pstatic void __exit led_platform_exit(void)
* o8 E! Q2 o) t{
3 F9 O: P. V& N( W# W# ^        platform_device_unregister(&da850_evm_tl_leds_device);5 [: W7 D5 G' @) R) b

' l& H$ c# |1 p        printk(KERN_INFO "LED unregister!\n");
! L4 I2 H2 d6 N: `3 ^}+ m3 J1 Y9 H: c" o
+ ^  ~/ h: p4 k  b; W
module_init(led_platform_init);6 V' `5 T7 e1 [, ?
module_exit(led_platform_exit);+ p' T4 q0 o4 J# A1 X) D8 [

0 D9 R8 c1 `4 h' \3 |- l% f* kMODULE_DESCRIPTION("Led platform driver");
# l6 @0 A  k6 M$ XMODULE_AUTHOR("Tronlong");
% h- t8 ]. t& v2 P  M5 {MODULE_LICENSE("GPL");
9 ~0 H" M3 \, ^
# s' [8 M8 ~, _# v, B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-30 11:39 , Processed in 0.044455 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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