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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
' _8 B! n. ~9 Z#include <linux/init.h>
& \# y* T) }. w% G#include <linux/module.h>( Q8 S1 D8 J- d5 ~$ j+ j
#include <linux/kernel.h>
" C. x! K# `" M4 B#include <linux/types.h># |1 J7 J3 B# D' B
#include <linux/gpio.h>
# _3 z' H7 _! u9 P7 v#include <linux/leds.h>3 R8 s* M% d5 T
#include <linux/platform_device.h>) T/ F6 R% ]- Y. Y7 [
; }$ r6 x3 ]  ^; v
#include <asm/mach-types.h>! A! e0 J( j/ T9 x
#include <asm/mach/arch.h>
0 \- {/ W" Z. F1 J" J( i5 O6 R#include <mach/da8xx.h>
) y4 k6 s8 H! _' Y6 n# f#include <mach/mux.h>+ a" j4 u2 E0 @( U& [$ D7 Q+ ?3 V2 H
% K- F; `9 D' g  d7 z2 I0 d
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)" m" A9 k' n, M
#define DA850_USER_LED1        GPIO_TO_PIN(0, 5); o  p2 i/ w( P
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)+ {. w' j2 t9 h( E5 e
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)- q) Y) s5 i& M6 P# t1 T% u

9 Q4 t! r, C* F6 a4 H; d$ D, S/* assign the tl som board LED-GPIOs*/5 a  H1 W+ C* L& t6 `
static const short da850_evm_tl_user_led_pins[] = {
: Y' I+ x) p- C, O1 E        /* These pins are definition at <mach/mux.h> file */
# x' S1 F8 m( V* x6 b: c        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,7 \; X, C% d2 n+ u- R4 Z$ i# x4 d
        -14 B0 p. a! [% t1 Y+ w
};7 e- I/ x% j7 _: y& E
& H( L1 w0 k/ y- l" Y
static struct gpio_led da850_evm_tl_leds[] = {; u* R) n4 O& S3 t* u0 c6 X+ o
        {
! s' L  M$ d4 q% Z( L                .active_low = 0,
8 u  L# F8 i# X* g                .gpio = DA850_USER_LED0,/ y1 T' Z! m0 `1 T$ T3 b' A
                .name = "user_led0",
2 i' Z( q  t" g2 b$ W6 Q9 K                .default_trigger = "default-on",
+ e3 f$ T" l4 }/ S' T% m6 C        },* }  E, R8 G- ]4 g" d  U5 {
        {+ f6 Z& D+ z3 s* u1 @, F
                .active_low = 0,
  F3 K5 a# r2 j2 E8 F, O$ g) Y                .gpio = DA850_USER_LED1,
5 [- G- s% d0 ]) G. W/ o                .name = "user_led1",/ W6 i4 Q' D4 Y6 v1 a- m; r
                .default_trigger = "default-on",
0 Y3 d* g6 k! D8 a" R        },9 \: T; d/ L6 e  t1 U
        {' Z( F: ^3 u: g- p7 Y: l
                .active_low = 0,( x" l9 ]) [7 b+ i2 M
                .gpio = DA850_USER_LED2,0 \; {7 W8 P, }# u( m
                .name = "user_led2",/ w. \; P  T" ~  a: Z
                .default_trigger = "default-on",, w# t: B3 a& a- l5 h, t- f" g
        },
. }1 a- |  N+ \) P, Y* a. y        {4 {6 R: n) z. c* e( h' m
                .active_low = 0,& ~0 f7 Y+ V# L" ~  O( _( N- [
                .gpio = DA850_USER_LED3,. z" W! \9 q6 L- Y4 c. G
                .name = "user_led3"," g. J1 }! e4 E3 t8 B% K; N5 w
                .default_trigger = "default-on",
. `: p5 I: h1 t. R        },0 i: L- k% _+ ~. |3 g5 J' g
};
; z4 z  ~6 W/ }4 A7 m* v% q
; u- F- _% W( K' k1 ostatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {$ @& U+ L+ M9 u% l  z
        .leds = da850_evm_tl_leds,
; g. r8 m6 c9 `4 {' e$ r        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
" i; @3 g3 w+ U2 ]6 ?: v6 m3 O};; `! w* A* _/ O  B( X6 P/ C

  O9 w& {* U5 T$ c+ `9 istatic void led_dev_release(struct device *dev)0 S- o" E+ E# L8 V3 K
{
: G) `) a8 G* l};4 s1 G6 V8 r  ~  w- a+ v
; K1 s; n+ g) X, U4 e3 L; c- X
static struct platform_device da850_evm_tl_leds_device = {
9 N7 `2 v4 z6 W9 d* d" U6 Z        .name                = "leds-gpio",% P2 }9 v8 z6 q; d& g5 G3 X
        .id                = 1,$ X/ t. \7 Q- m) s
        .dev = {
8 ]3 g6 \" ]* u. b- m$ |                .platform_data = &da850_evm_tl_leds_pdata,
6 g0 p% [! y$ `                .release = led_dev_release,
  H% \# J1 o  L$ Z        }- k1 w& f7 f+ X  s" ^
};6 |. V. `. J' v

5 Z; g$ e5 ?3 M3 |static int __init led_platform_init(void)
' O, L# R* C. W& K{* `6 ]# Z5 G" ^5 o3 F
        int ret;* \+ `4 b. |  Y6 C# `7 T
#if 0  m$ W( [4 @' q/ k
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
6 W+ |% d# [% F( e6 x. ]* u4 O: D4 @        if (ret)8 @2 e% g, E) U1 a6 A. c
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :") ]+ }$ V0 I: j  a- j8 t( P
                                "%d\n", ret);  n% ^1 J0 y) k. g! J
#endif- a- X$ F) G$ H5 E
        ret = platform_device_register(&da850_evm_tl_leds_device);: v9 }4 Y1 s2 s1 C# O( z1 @. r
        if (ret)
5 E$ W$ A& K+ B+ A1 r( n                pr_warning("Could not register som GPIO expander LEDS");
. }: z4 k0 m1 l+ R4 R4 I        else4 H: E# Z! w: F; J
                printk(KERN_INFO "LED register sucessful!\n");) \7 i; k0 w1 s% Z$ J  v

$ g6 t7 k# i$ g  u4 _; E0 Z        return ret;
; X: Q5 @$ ?* ^7 L: b0 I}+ W$ p* e6 y( R
/ x* K) G8 \! \, @1 E" t, f& D2 B3 i
static void __exit led_platform_exit(void)
, S" s9 B0 V! G1 q{
: C; g' r4 c" p( n$ F5 a        platform_device_unregister(&da850_evm_tl_leds_device);
6 O- ^. l9 V1 |0 N
8 m2 a8 U6 T0 j' L* {1 I8 H- _9 J        printk(KERN_INFO "LED unregister!\n");
2 Q" G: N7 ]7 h2 x0 J}* q4 ~0 U& f4 n7 `! b5 {( y9 x7 D

7 S. w9 _' J% L3 y* K( ?7 l5 Nmodule_init(led_platform_init);
/ R  b2 M% z. X0 j' t1 L& Rmodule_exit(led_platform_exit);
2 h2 Q0 Q5 `2 i2 ^* ^9 Z$ W
2 l- P* A: l3 e- ~+ e$ Z# DMODULE_DESCRIPTION("Led platform driver");0 z0 I" `4 v- d& `4 G. F4 C
MODULE_AUTHOR("Tronlong");0 e$ s* a' U$ r6 U% l
MODULE_LICENSE("GPL");1 G; U0 C# R, J' k. B: p7 b
- [; N. k% h6 M7 a, m7 [) }1 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-17 23:33 , Processed in 0.049112 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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