Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
x86
kernel
i8237.c
Go to the documentation of this file.
1
/*
2
* 8237A DMA controller suspend functions.
3
*
4
* Written by Pierre Ossman, 2005.
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or (at
9
* your option) any later version.
10
*/
11
12
#include <
linux/init.h
>
13
#include <
linux/syscore_ops.h
>
14
15
#include <asm/dma.h>
16
17
/*
18
* This module just handles suspend/resume issues with the
19
* 8237A DMA controller (used for ISA and LPC).
20
* Allocation is handled in kernel/dma.c and normal usage is
21
* in asm/dma.h.
22
*/
23
24
static
void
i8237A_resume(
void
)
25
{
26
unsigned
long
flags
;
27
int
i
;
28
29
flags =
claim_dma_lock
();
30
31
dma_outb
(0,
DMA1_RESET_REG
);
32
dma_outb
(0,
DMA2_RESET_REG
);
33
34
for
(i = 0; i < 8; i++) {
35
set_dma_addr(i, 0x000000);
36
/* DMA count is a bit weird so this is not 0 */
37
set_dma_count
(i, 1);
38
}
39
40
/* Enable cascade DMA or channel 0-3 won't work */
41
enable_dma
(4);
42
43
release_dma_lock
(flags);
44
}
45
46
static
struct
syscore_ops
i8237_syscore_ops = {
47
.resume = i8237A_resume,
48
};
49
50
static
int
__init
i8237A_init_ops(
void
)
51
{
52
register_syscore_ops
(&i8237_syscore_ops);
53
return
0;
54
}
55
device_initcall
(i8237A_init_ops);
Generated on Thu Jan 10 2013 13:20:48 for Linux Kernel by
1.8.2