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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] 程序注解

[复制链接]

5

主题

8

帖子

53

积分

注册会员

Rank: 2

积分
53
跳转到指定楼层
楼主
发表于 2018-1-19 19:02:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
求大神给下面的程序做注解,请稍详细些,谢谢。
+ k* q7 v4 M- |- Z, q6 W, J6 m#include <linux/init.h>
3 d, g* n* o1 |7 X, O4 e% z% K#include <linux/module.h>% W# v6 @, C) f/ b( k: M. U( O& J5 p
#include <linux/kernel.h>
  D* @0 ?! C2 w2 ]9 ^; Z& V* u# ^#include <linux/types.h>
, V/ C! Y; B) B& n9 K% H; C5 o+ e7 f#include <linux/gpio.h>9 s* Z3 D5 r. B% r" D
#include <linux/leds.h>
* `- d8 {9 W0 |1 p; _0 h#include <linux/platform_device.h>
& K" U! C# b, a% p* Z5 X
) X9 ?6 p0 s$ Q+ [# Z6 Z3 r#include <asm/mach-types.h>
' Q6 V& ~2 y  ~) l2 X+ W9 n; l#include <asm/mach/arch.h>
5 k) A- |. [, ~( c- D#include <mach/da8xx.h>. h1 p1 l7 L' t& o
#include <mach/mux.h>
) l4 [# C* s5 S+ b1 X9 k# m; Q( {% X% |: [% R2 y
#define DA850_USER_LED0        GPIO_TO_PIN(0, 0)
+ H7 u. Z& ^. P* l, |$ F( r#define DA850_USER_LED1        GPIO_TO_PIN(0, 5)1 t% Z: P: P9 K; r0 c- M
#define DA850_USER_LED2        GPIO_TO_PIN(0, 1)
; n5 M& O7 n( J& T' g1 W#define DA850_USER_LED3        GPIO_TO_PIN(0, 2)! x" d5 `! e  J0 l: S

& t. ]( I7 H  [' N! ]/* assign the tl som board LED-GPIOs*/+ c5 P& [* C8 B1 e" Y& L6 B
static const short da850_evm_tl_user_led_pins[] = {
' C2 _- K8 B7 k+ s% t        /* These pins are definition at <mach/mux.h> file */
# R* ~( f; @: |! q: {+ A        DA850_GPIO0_0, DA850_GPIO0_1, DA850_GPIO0_2, DA850_GPIO0_5,
% n1 v8 i) [; }; r6 U% c        -1+ y3 K: q) V: s) J
};
( ]+ f, A; K: B- C1 i4 T" f; M% v; q2 m( H
static struct gpio_led da850_evm_tl_leds[] = {
6 r" u' e9 E' V3 @+ @5 Y        {" O+ F1 B  Z& N
                .active_low = 0,: F! f9 i( @, V) [3 ?: @1 O
                .gpio = DA850_USER_LED0,2 D6 h% z/ Z/ ?
                .name = "user_led0",
* D3 M7 E4 R7 g' E  |                .default_trigger = "default-on",
, H) V  ]* h$ P4 p        },% A/ N" X, A( `& @; g! u# A
        {# ?4 w4 ~4 J: x- l
                .active_low = 0,% u# A1 C1 W, Y2 e: W1 x: H
                .gpio = DA850_USER_LED1,
& k6 _- _# {2 V. K$ i5 a8 ]                .name = "user_led1",( U# M9 [4 Z! M
                .default_trigger = "default-on",: L+ N. `# w! |9 S: T% b8 X/ t
        },8 x( \$ K# B% p4 ], _& R- Z
        {
0 A1 N" F: s, s0 S# a1 ~/ v                .active_low = 0,( h, e- U' ]4 o4 p6 K
                .gpio = DA850_USER_LED2,2 s, w: D/ v( e, V! J/ O, w& `2 Y4 o
                .name = "user_led2",* Z# W8 t2 T. y; A) Z
                .default_trigger = "default-on",
0 u3 Y! `8 n* W; z% c3 _        },/ ?4 M" F3 m9 h/ ]9 ~( `
        {9 J/ k( S: @( x$ h' a: A
                .active_low = 0,
7 Z# o  F4 h" P8 i/ w& M/ J  X                .gpio = DA850_USER_LED3,
2 u* ?: ~3 U2 H$ ^& h                .name = "user_led3"," f, G5 h: v1 T5 j1 E$ a
                .default_trigger = "default-on",
/ [7 C$ [6 M* |5 B/ c1 c& [        },/ X: H3 A3 C' n; L4 a2 S4 c
};6 r- s- ^# p( c1 g) j( G, ^

7 V4 G+ ~" F8 b! Y5 ?  H! O1 Kstatic struct gpio_led_platform_data da850_evm_tl_leds_pdata = {- H# f' E& m. W9 o( {/ ~
        .leds = da850_evm_tl_leds,
' P* ^% {, Q. e" P* k        .num_leds = ARRAY_SIZE(da850_evm_tl_leds),
4 h' l, T- l5 r; \  Q8 t};
: q" [0 ~/ x# n% ~3 |$ k
# H9 l- s/ u* fstatic void led_dev_release(struct device *dev)* k# i0 L# ?$ C; e" r) c' m8 H
{
( P0 `" r* P& ]! A; O};' s- Y: U- C3 L% ]& T

( I0 o- l# W4 y+ ?9 y5 |! ?+ @9 mstatic struct platform_device da850_evm_tl_leds_device = {2 p3 }% b: ~7 q
        .name                = "leds-gpio",
1 A( q8 Z3 A: x        .id                = 1,
  U7 ?1 ?/ x& a; j' w- d6 Z        .dev = {/ u: Y2 Q# V5 b
                .platform_data = &da850_evm_tl_leds_pdata,7 ~. t7 }) ?- z. z! [
                .release = led_dev_release,+ G" R! ~! m* ^- }2 C" v
        }* c3 C9 F: M" u- ?( y, M
};
3 }  v3 J: O, B, @1 r
1 E  s1 L; R% W' [static int __init led_platform_init(void)% |1 D! |# V/ v0 X4 m
{
( Z" m  J" C4 o3 r5 \& u$ T2 s        int ret;
0 j7 q- j; R1 F$ d& E7 `#if 08 [  V0 {( Z9 w' I- ~
        ret = davinci_cfg_reg_list(da850_evm_tl_user_led_pins);- e, w5 r' X/ {' C3 C$ {, j
        if (ret)
) p* {' e4 {: ?/ D4 B1 \                pr_warning("da850_evm_tl_leds_init : User LED mux failed :"
2 i3 _9 M& O" D; G! s  F8 g: y                                "%d\n", ret);/ Y4 H& s* J, z. D$ a; a, c# m+ y
#endif8 D( D. Q2 v+ d! O- A# z
        ret = platform_device_register(&da850_evm_tl_leds_device);. t0 m3 L- i' e  z4 x+ D
        if (ret)
3 y5 Q) A& L2 y# f8 K, L                pr_warning("Could not register som GPIO expander LEDS");. r6 B% b1 j9 g
        else
* C6 z# E1 V% Q7 _. r+ D                printk(KERN_INFO "LED register sucessful!\n");
* b+ f; Z2 i3 F9 m! h4 s6 T+ ~
; Y! N3 [* w8 y' J' j& ?* J% c        return ret;0 [7 z3 ?. G; o: E7 ?3 F* P% V
}
; V3 e5 Q2 ^- t2 U0 ]* V1 e' T0 B! C* d8 m
* j  ~1 R/ D: [static void __exit led_platform_exit(void)
; t1 h% J$ c9 h0 B- E# x& }{4 [+ ^$ E2 {8 u# T5 a8 T( Y9 S
        platform_device_unregister(&da850_evm_tl_leds_device);: A% F( C5 c+ L& R* Y$ [3 p* f) e
0 O  ]" C  }& \8 c6 p
        printk(KERN_INFO "LED unregister!\n");
4 ~7 n) r& `  A6 |/ y4 l}
4 T) ~; ?9 n/ W9 D" Y8 z% p% t6 S/ s- G2 N- S& K
module_init(led_platform_init);, p9 R* D' e# ~  {
module_exit(led_platform_exit);7 z( N; K5 ~( k! C( H! i+ B

$ @. F* _1 {( m% s% aMODULE_DESCRIPTION("Led platform driver");
+ D/ n. \: M+ t; FMODULE_AUTHOR("Tronlong");5 A" H9 S% s* ?3 s- I& F
MODULE_LICENSE("GPL");
% L5 T2 ?! N5 s1 F
9 ^+ j% _# \( X, j1 F# R3 G" ~: m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-13 13:41 , Processed in 0.039499 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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