1/* 2 * linux/include/asm-arm/arch-arc/ide.h 3 * 4 * Copyright (C) 1997,1998 Russell King 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 version 2 as 8 * published by the Free Software Foundation. 9 * 10 * IDE definitions for the Acorn Archimedes/A5000 11 * architecture 12 * 13 * Modifications: 14 * 04-04-1998 PJB Merged `arc' and `a5k' versions 15 * 01-07-1998 RMK Added new ide_ioregspec_t 16 * 29-07-1998 RMK Major re-work of IDE architecture specific code 17 */ 18#include <asm/irq.h> 19#include <asm/mach-types.h> 20 21/* 22 * Set up a hw structure for a specified data port, control port and IRQ. 23 * This should follow whatever the default interface uses. 24 */ 25static __inline__ void 26ide_init_hwif_ports(hw_regs_t *hw, int data_port, int ctrl_port, int *irq) 27{ 28 ide_ioreg_t reg = (ide_ioreg_t) data_port; 29 int i; 30 31 for (i = IDE_DATA_OFFSET; i <= IDE_STATUS_OFFSET; i++) { 32 hw->io_ports[i] = reg; 33 reg += 1; 34 } 35 hw->io_ports[IDE_CONTROL_OFFSET] = (ide_ioreg_t) ctrl_port; 36 if (irq) 37 *irq = 0; 38} 39 40/* 41 * This registers the standard ports for this architecture with the IDE 42 * driver. 43 */ 44static __inline__ void ide_init_default_hwifs(void) 45{ 46 if (machine_is_a5k()) { 47 hw_regs_t hw; 48 49 memset(&hw, 0, sizeof(hw)); 50 51 ide_init_hwif_ports(&hw, 0x1f0, 0x3f6, NULL); 52 hw.irq = IRQ_HARDDISK; 53 ide_register_hw(&hw, NULL); 54 } 55} 56