Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

io-unit.c File Reference

#include <linux/config.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/malloc.h>
#include <asm/pgtable.h>
#include <asm/sbus.h>
#include <asm/io.h>
#include <asm/io-unit.h>
#include <asm/mxcc.h>
#include <asm/spinlock.h>
#include <asm/bitops.h>

Include dependency graph for io-unit.c:

Go to the source code of this file.

Defines

#define IOD(x)   do { } while (0)
#define IOPERM   (IOUPTE_CACHE | IOUPTE_WRITE | IOUPTE_VALID)
#define MKIOPTE(phys)   __iopte((((phys)>>4) & IOUPTE_PAGE) | IOPERM)

Functions

 __initfunc (void iounit_init(int sbi_node, int io_node, struct linux_sbus *sbus))
static unsigned long iounit_get_area (struct iounit_struct *iounit, unsigned long vaddr, int size)
static __u32 iounit_get_scsi_one (char *vaddr, unsigned long len, struct linux_sbus *sbus)
static void iounit_get_scsi_sgl (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static void iounit_release_scsi_one (__u32 vaddr, unsigned long len, struct linux_sbus *sbus)
static void iounit_release_scsi_sgl (struct mmu_sglist *sg, int sz, struct linux_sbus *sbus)
static char * iounit_lockarea (char *vaddr, unsigned long len)
static void iounit_unlockarea (char *vaddr, unsigned long len)
 __initfunc (void ld_mmu_iounit(void))
__u32 iounit_map_dma_init (struct linux_sbus *sbus, int size)
__u32 iounit_map_dma_page (__u32 vaddr, void *addr, struct linux_sbus *sbus)


Define Documentation

#define IOD x   )     do { } while (0)
 

Definition at line 23 of file io-unit.c.

Referenced by iounit_get_area(), iounit_release_scsi_one(), and iounit_release_scsi_sgl().

#define IOPERM   (IOUPTE_CACHE | IOUPTE_WRITE | IOUPTE_VALID)
 

Definition at line 26 of file io-unit.c.

#define MKIOPTE phys   )     __iopte((((phys)>>4) & IOUPTE_PAGE) | IOPERM)
 

Definition at line 27 of file io-unit.c.

Referenced by iommu_map_dvma_pages_for_iommu(), iounit_get_area(), and iounit_map_dma_page().


Function Documentation

__initfunc void   ld_mmu_iounit(void)  ) 
 

Definition at line 220 of file io-unit.c.

References BTFIXUPCALL_NOP, BTFIXUPCALL_NORM, BTFIXUPCALL_RETO0, BTFIXUPSET_CALL, iounit_get_scsi_one(), iounit_get_scsi_sgl(), iounit_lockarea(), iounit_release_scsi_one(), iounit_release_scsi_sgl(), iounit_unlockarea(), mmu_get_scsi_one, mmu_get_scsi_sgl, mmu_lockarea, mmu_map_dma_area, mmu_release_scsi_one, mmu_release_scsi_sgl, and mmu_unlockarea.

Here is the call graph for this function:

__initfunc void   iounit_init(int sbi_node, int io_node, struct linux_sbus *sbus)  ) 
 

Definition at line 29 of file io-unit.c.

References linux_sbus::iommu, IOUNIT_BMAP1_START, IOUNIT_BMAP2_START, IOUNIT_BMAPM_END, IOUNIT_BMAPM_START, kmalloc(), memset, PAGE_SIZE, iommu_struct::page_table, panic(), prom_apply_generic_ranges(), prom_getproperty(), sparc_alloc_io(), linux_prom_registers::which_io, and x0.

Here is the call graph for this function:

static unsigned long iounit_get_area struct iounit_struct iounit,
unsigned long  vaddr,
int  size
[static]
 

Definition at line 63 of file io-unit.c.

References find_next_zero_bit(), i, IOD, IOUNIT_DMA_BASE, j, k, limit(), MKIOPTE, next, PAGE_MASK, PAGE_SHIFT, PAGE_SIZE, panic(), scan, set_bit, test_bit, and x100.

Referenced by iounit_get_scsi_one(), and iounit_get_scsi_sgl().

Here is the call graph for this function:

static __u32 iounit_get_scsi_one char *  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 111 of file io-unit.c.

References linux_sbus::iommu, iounit_get_area(), iounit_struct::lock, ret, spin_lock_irqsave, and spin_unlock_irqrestore.

Referenced by __initfunc().

Here is the call graph for this function:

static void iounit_get_scsi_sgl struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 122 of file io-unit.c.

References addr, mmu_sglist::dvma_addr, linux_sbus::iommu, iounit_get_area(), len, iounit_struct::lock, spin_lock_irqsave, and spin_unlock_irqrestore.

Referenced by __initfunc().

Here is the call graph for this function:

static char* iounit_lockarea char *  vaddr,
unsigned long  len
[static]
 

Definition at line 209 of file io-unit.c.

Referenced by __initfunc().

__u32 iounit_map_dma_init struct linux_sbus sbus,
int  size
 

Definition at line 235 of file io-unit.c.

Referenced by happy_meal_ether_init().

__u32 iounit_map_dma_page __u32  vaddr,
void *  addr,
struct linux_sbus sbus
 

Definition at line 274 of file io-unit.c.

Referenced by happy_meal_init_rings(), sun4d_happy_meal_rx(), and sun4d_happy_meal_start_xmit().

static void iounit_release_scsi_one __u32  vaddr,
unsigned long  len,
struct linux_sbus sbus
[static]
 

Definition at line 135 of file io-unit.c.

References iounit_struct::bmap, clear_bit, IOD, linux_sbus::iommu, IOUNIT_DMA_BASE, iounit_struct::lock, PAGE_MASK, PAGE_SHIFT, PAGE_SIZE, spin_lock_irqsave, and spin_unlock_irqrestore.

Referenced by __initfunc().

static void iounit_release_scsi_sgl struct mmu_sglist sg,
int  sz,
struct linux_sbus sbus
[static]
 

Definition at line 149 of file io-unit.c.

References iounit_struct::bmap, clear_bit, mmu_sglist::dvma_addr, IOD, linux_sbus::iommu, IOUNIT_DMA_BASE, mmu_sglist::len, len, iounit_struct::lock, PAGE_MASK, PAGE_SHIFT, PAGE_SIZE, spin_lock_irqsave, and spin_unlock_irqrestore.

Referenced by __initfunc().

static void iounit_unlockarea char *  vaddr,
unsigned long  len
[static]
 

Definition at line 215 of file io-unit.c.

Referenced by __initfunc().