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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。/ P; _% T: a  I5 g5 B8 @
#include <linux/init.h>- F5 f* a' z& k- j+ P' P0 K4 M
#include <linux/module.h># \7 w& i& t5 |
#include <linux/kernel.h>9 K- @+ q7 n  L, n
#include <linux/types.h>6 i% \2 z6 @2 C+ ]0 L' z- o; r
#include <linux/gpio.h>
6 I  _' G: n( }5 a#include <linux/leds.h>, ~2 @, T+ ?! m% e
#include <linux/platform_device.h>7 A5 T/ ]+ m/ V' y2 V/ f! E# g
0 Q/ q0 Q0 M# Q
#include <asm/mach-types.h>
, K" ]6 F% E) k' w+ d#include <asm/mach/arch.h>
9 J; E( z1 T$ C! y: o#include <mach/da8xx.h>
0 L& \6 A9 K  k1 O* L3 k#include <mach/mux.h>
& I& s0 p: B7 D1 z# m2 M+ ^% T) u1 S: k, J, `3 y- f
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
! G! ?, ?; F0 o#define DA850_USER_LED1        GPIO_TO_PIN(0, 5); [) n& R  ^4 {9 u. j  M9 W& i
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)& {, E$ G& C, R
#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)
, N. O2 G1 P! E
9 D9 m9 |+ n" g) T* v/* assign the tl som board LED-GPIOs*/
) p1 x% h2 l2 ~3 p5 {9 Jstatic const short da850_evm_tl_user_led_pins[] = {
( g, F" }. R% g7 ^- n* e6 G1 @! u" Q        /* These pins are definition at <mach/mux.h> file */& O$ J) k8 f" e
        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
/ y- O, _* k# C1 g+ R        -1
" V% k: F4 t# R4 K" M+ d};' O9 J2 o' W) H# c4 L6 B
: I/ c# M' p8 M, g, z$ z8 l) Q
static struct gpio_led da850_evm_tl_leds[] = {
# o( W6 a' A) \  s  G1 @+ @0 G        {
' s0 E. y% k+ L5 f$ T                .active_low = 0,
. }1 l: y) z7 A3 O7 ^( {8 E7 S                .gpio = DA850_USER_LED0,
5 C6 R, C8 |9 {1 N                .name = "user_led0",
  [  c- D7 u/ T5 Q' Q                .default_trigger = "default-on",
4 i" n* U/ [, d/ y# X0 Y        },0 l3 ^5 K4 i0 k# S, T* o
        {
$ m" t$ k& K% ~: x( H                .active_low = 0,
; d6 F  F: Z$ o* K; j' k/ S                .gpio = DA850_USER_LED1,. l# _3 q. r0 L! F7 z
                .name = "user_led1",
1 |3 S. u1 C7 F$ ^; V  O# n. b                .default_trigger = "default-on",
; I3 X4 g5 L/ H5 m9 k3 v% U6 N; t( G        },7 O# Q4 j# i1 R  d$ F' ]* y
        {
/ |# z! r6 i# m/ t$ v' J( j                .active_low = 0,9 V4 N- p4 h$ L" z( ]
                .gpio = DA850_USER_LED2,
  G' t7 U  P/ E1 h8 z                .name = "user_led2",
' j; N! n. x/ h* V                .default_trigger = "default-on",
5 h0 c, A, a, ?        },; Q  F8 a6 [9 a' x4 f
        {: [3 P; g. y* f. y  [7 b0 p
                .active_low = 0,$ O9 @$ f, I8 D0 s
                .gpio = DA850_USER_LED3,
# @- X$ p# B7 ?+ X; {9 ]# ]3 v( s                .name = "user_led3",4 [9 G, {* k  ^2 E0 x" z# \2 b* z
                .default_trigger = "default-on",
, r/ j) g- [* r, w; a3 P" {! y        },
2 S0 f' C8 T1 e: G};" y: f4 K( b$ p

$ E( E9 ^  @3 ^- M% g8 i" pstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {
/ z2 I5 u" Y3 {$ \8 I6 v        .leds = da850_evm_tl_leds," G/ S6 p% T# J' x) L: Z
        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
5 u, w# i  }8 ^  C$ _; n% m};
; r4 X/ _4 q0 W; ~$ n0 O0 [2 V! T0 l. Y
static void led_dev_release(struct device *dev)" v: G/ T/ A4 U- g$ F: x) K& w9 i3 q
{  g. i+ E* E, v+ }0 o: |
};
) x# a) W( x6 p
* e8 O7 Y5 |- E  E+ d4 Gstatic struct platform_device da850_evm_tl_leds_device = {% ?' Z( W% X3 M9 e3 }* E4 l% I! n$ k
        .name                = "leds-gpio",# x4 x! O' y( S7 h* X5 ?% I, ~) h! A
        .id                = 1,9 N* ~$ J$ H3 A- z1 y% v& s+ O' r
        .dev = {; a! z3 g2 e  U8 f
                .platform_data = &da850_evm_tl_leds_pdata,1 o/ i) l; _) v8 Z- J6 i  z! d
                .release = led_dev_release,  g5 k% b: E0 \/ u3 W# j2 U* F
        }& N4 a. ~& k/ q, `. J* P3 w
};
! ]) }6 q9 Z3 J$ R" X+ V& w$ ?: F) j9 ?* d( \1 o
static int __init led_platform_init(void)" X, m: E& j* C# Z
{* b8 N! J- {1 ~; Z" {
        int ret;
: i) r$ W+ C- V/ h9 U#if 0# ]% |$ i; y$ c9 R; {8 U" y$ V& @
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);
8 |7 I' G7 j% q4 P/ B. Y1 _8 F        if (ret)- V5 I/ H( E- r7 f( q
                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
: z" I& B  e$ r9 c: X                                "%d\n", ret);
6 D* l+ C1 `" u8 k" O1 T#endif# g/ O+ N: }1 A
        ret = platform_device_register(&da850_evm_tl_leds_device);7 P- a8 I, {% V# A" m
        if (ret)
1 Y* `: W+ P0 P( Y% I  P: b                pr_warning("Could not register som GPIO expander LEDS");
8 k/ V* @3 R8 E1 o" D# L( q        else! y2 ~; P- z- l- K7 J
                printk(KERN_INFO "LED register sucessful!\n");/ Z2 s2 d1 Y$ m( W2 f

6 B' u5 f" v, Y  ]% O* I: |        return ret;3 V4 f7 }1 `* s! v" I
}
5 b* @3 x0 A( W& x, Z4 f
; u7 `  E0 M) X3 H# Ustatic void __exit led_platform_exit(void)
% r; {6 X( k" f$ r6 f. n5 i{
7 v+ c& b- L& K. h' I) z$ s        platform_device_unregister(&da850_evm_tl_leds_device);$ {. H6 ^5 w. z

1 P* u- s1 R  @1 Y2 n        printk(KERN_INFO "LED unregister!\n");, G, f0 ~5 `1 W) N8 i( @
}' j2 v! K+ o, b1 `& i! S; l2 T* j
5 A# C' v: I7 o: t6 M
module_init(led_platform_init);/ P5 {. f; S" _
module_exit(led_platform_exit);8 |" ?4 f6 s6 S' J
% F  [# U/ l  O8 r
MODULE_DESCRIPTION("Led platform driver");9 f% ]( S- p$ H7 W
MODULE_AUTHOR("Tronlong");
$ V* P6 Q( N1 ^" @- d* kMODULE_LICENSE("GPL");
& T! I( G+ O' v: M1 }, V
8 a/ R8 P/ k, d( z' q, n6 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 04:59 , Processed in 0.040039 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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