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

ide-ics.c File Reference

#include <linux/module.h>
#include <linux/ioport.h>
#include <linux/malloc.h>
#include <linux/blkdev.h>
#include <linux/errno.h>
#include <linux/hdreg.h>
#include <asm/ecard.h>
#include <asm/io.h>
#include "../../block/ide.h"

Include dependency graph for ide-ics.c:

Go to the source code of this file.

Defines

#define MAX_IFS   2
#define ICS_IDENT_OFFSET   0x8a0
#define ICS_ARCIN_V5_INTRSTAT   0x000
#define ICS_ARCIN_V5_INTROFFSET   0x001
#define ICS_ARCIN_V5_IDEOFFSET   0xa00
#define ICS_ARCIN_V5_IDEALTOFFSET   0xae0
#define ICS_ARCIN_V5_IDESTEPPING   4
#define ICS_ARCIN_V6_IDEOFFSET_1   0x800
#define ICS_ARCIN_V6_INTROFFSET_1   0x880
#define ICS_ARCIN_V6_INTRSTAT_1   0x8a4
#define ICS_ARCIN_V6_IDEALTOFFSET_1   0x8e0
#define ICS_ARCIN_V6_IDEOFFSET_2   0xc00
#define ICS_ARCIN_V6_INTROFFSET_2   0xc80
#define ICS_ARCIN_V6_INTRSTAT_2   0xca4
#define ICS_ARCIN_V6_IDEALTOFFSET_2   0xce0
#define ICS_ARCIN_V6_IDESTEPPING   4

Enumerations

enum  iftype_t { ics_if_unknown, ics_if_arcin_v5, ics_if_arcin_v6 }

Functions

static void icside_irqenable_arcin_v5 (struct expansion_card *ec, int irqnr)
static void icside_irqdisable_arcin_v5 (struct expansion_card *ec, int irqnr)
static void icside_irqenable_arcin_v6 (struct expansion_card *ec, int irqnr)
static void icside_irqdisable_arcin_v6 (struct expansion_card *ec, int irqnr)
static int icside_irqpending_arcin_v6 (struct expansion_card *ec)
static iftype_t icside_identifyif (struct expansion_card *ec)
static int icside_register_port (unsigned long dataport, unsigned long ctrlport, int stepping, int irq, int dma)
static void icside_register (struct expansion_card *ec, int index)
int icside_init (void)

Variables

static const card_ids icside_cids []
static struct expansion_cardec [MAX_ECARDS]
static int result [MAX_ECARDS][MAX_IFS]
static const expansioncard_ops_t icside_ops_arcin_v5
static const expansioncard_ops_t icside_ops_arcin_v6


Define Documentation

#define ICS_ARCIN_V5_IDEALTOFFSET   0xae0
 

Definition at line 34 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V5_IDEOFFSET   0xa00
 

Definition at line 33 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V5_IDESTEPPING   4
 

Definition at line 35 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V5_INTROFFSET   0x001
 

Definition at line 32 of file ide-ics.c.

Referenced by icside_irqdisable_arcin_v5(), icside_irqenable_arcin_v5(), and icside_register().

#define ICS_ARCIN_V5_INTRSTAT   0x000
 

Definition at line 31 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_IDEALTOFFSET_1   0x8e0
 

Definition at line 40 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_IDEALTOFFSET_2   0xce0
 

Definition at line 44 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_IDEOFFSET_1   0x800
 

Definition at line 37 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_IDEOFFSET_2   0xc00
 

Definition at line 41 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_IDESTEPPING   4
 

Definition at line 45 of file ide-ics.c.

Referenced by icside_register().

#define ICS_ARCIN_V6_INTROFFSET_1   0x880
 

Definition at line 38 of file ide-ics.c.

Referenced by icside_irqdisable_arcin_v6(), icside_irqenable_arcin_v6(), and icside_register().

#define ICS_ARCIN_V6_INTROFFSET_2   0xc80
 

Definition at line 42 of file ide-ics.c.

Referenced by icside_irqdisable_arcin_v6(), icside_irqenable_arcin_v6(), and icside_register().

#define ICS_ARCIN_V6_INTRSTAT_1   0x8a4
 

Definition at line 39 of file ide-ics.c.

Referenced by icside_irqpending_arcin_v6().

#define ICS_ARCIN_V6_INTRSTAT_2   0xca4
 

Definition at line 43 of file ide-ics.c.

Referenced by icside_irqpending_arcin_v6().

#define ICS_IDENT_OFFSET   0x8a0
 

Definition at line 29 of file ide-ics.c.

Referenced by icside_identifyif().

#define MAX_IFS   2
 

Definition at line 27 of file ide-ics.c.


Enumeration Type Documentation

enum iftype_t
 

Enumeration values:
ics_if_unknown 
ics_if_arcin_v5 
ics_if_arcin_v6 

Definition at line 53 of file ide-ics.c.


Function Documentation

static iftype_t icside_identifyif struct expansion_card ec  )  [static]
 

Definition at line 139 of file ide-ics.c.

References addr, ecard_address(), ECARD_FAST, ECARD_IOC, ICS_IDENT_OFFSET, ics_if_arcin_v5, ics_if_arcin_v6, ics_if_unknown, inb, printk, and expansion_card::slot_no.

Referenced by icside_register().

Here is the call graph for this function:

int icside_init void   ) 
 

Definition at line 270 of file ide-ics.c.

References ecard_claim, ecard_find(), ecard_release, ecard_startfind(), i, icside_register(), MAX_ECARDS, NULL, and result.

Here is the call graph for this function:

static void icside_irqdisable_arcin_v5 struct expansion_card ec,
int  irqnr
[static]
 

Definition at line 76 of file ide-ics.c.

References ICS_ARCIN_V5_INTROFFSET, inb, and expansion_card::irq_data.

static void icside_irqdisable_arcin_v6 struct expansion_card ec,
int  irqnr
[static]
 

Definition at line 106 of file ide-ics.c.

References ICS_ARCIN_V6_INTROFFSET_1, ICS_ARCIN_V6_INTROFFSET_2, inb, and expansion_card::irq_data.

static void icside_irqenable_arcin_v5 struct expansion_card ec,
int  irqnr
[static]
 

Definition at line 67 of file ide-ics.c.

References ICS_ARCIN_V5_INTROFFSET, expansion_card::irq_data, and outb.

static void icside_irqenable_arcin_v6 struct expansion_card ec,
int  irqnr
[static]
 

Definition at line 96 of file ide-ics.c.

References ICS_ARCIN_V6_INTROFFSET_1, ICS_ARCIN_V6_INTROFFSET_2, expansion_card::irq_data, and outb.

static int icside_irqpending_arcin_v6 struct expansion_card ec  )  [static]
 

Definition at line 116 of file ide-ics.c.

References ICS_ARCIN_V6_INTRSTAT_1, ICS_ARCIN_V6_INTRSTAT_2, inb, and expansion_card::irq_data.

static void icside_register struct expansion_card ec,
int  index
[inline, static]
 

Definition at line 210 of file ide-ics.c.

References ecard_address(), ECARD_EASI, ECARD_FAST, ECARD_IOC, ECARD_MEMC, ICS_ARCIN_V5_IDEALTOFFSET, ICS_ARCIN_V5_IDEOFFSET, ICS_ARCIN_V5_IDESTEPPING, ICS_ARCIN_V5_INTROFFSET, ICS_ARCIN_V5_INTRSTAT, ICS_ARCIN_V6_IDEALTOFFSET_1, ICS_ARCIN_V6_IDEALTOFFSET_2, ICS_ARCIN_V6_IDEOFFSET_1, ICS_ARCIN_V6_IDEOFFSET_2, ICS_ARCIN_V6_IDESTEPPING, ICS_ARCIN_V6_INTROFFSET_1, ICS_ARCIN_V6_INTROFFSET_2, ics_if_arcin_v5, ics_if_arcin_v6, ics_if_unknown, icside_identifyif(), icside_register_port(), inb, ioaddr, outb, port, printk, and result.

Referenced by icside_init().

Here is the call graph for this function:

static int icside_register_port unsigned long  dataport,
unsigned long  ctrlport,
int  stepping,
int  irq,
int  dma
[static]
 

Definition at line 187 of file ide-ics.c.

References hw, i, IDE_CONTROL_OFFSET, IDE_DATA_OFFSET, IDE_STATUS_OFFSET, memset, and NULL.

Referenced by icside_register().


Variable Documentation

struct expansion_card* ec[MAX_ECARDS] [static]
 

Definition at line 59 of file ide-ics.c.

Referenced by __initfunc(), do_ext_call_interrupt(), ecard_check_lockup(), ecard_disablefiq(), ecard_disableirq(), ecard_enablefiq(), ecard_enableirq(), ecard_irq_noexpmask(), ecard_task_reset(), mac_counter_init(), MY_INIT(), smp_ext_call_sync(), smp_ext_call_sync_others(), and xpds_set_sdsl_serial_data().

const card_ids icside_cids[] [static]
 

Initial value:

 {
        { MANU_ICS,  PROD_ICS_IDE  },
        { MANU_ICS2, PROD_ICS2_IDE },
        { 0xffff, 0xffff }
}

Definition at line 47 of file ide-ics.c.

const expansioncard_ops_t icside_ops_arcin_v5 [static]
 

Initial value:

Definition at line 82 of file ide-ics.c.

const expansioncard_ops_t icside_ops_arcin_v6 [static]
 

Initial value:

Definition at line 124 of file ide-ics.c.

int result[MAX_ECARDS][MAX_IFS] [static]
 

Definition at line 60 of file ide-ics.c.