1/* 2 * (C) Copyright 2000 3 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 4 * 5 * See file CREDITS for list of people who contributed to this 6 * project. 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License as 10 * published by the Free Software Foundation; either version 2 of 11 * the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21 * MA 02111-1307 USA 22 * 23 */ 24/* ide.c - ide support functions */ 25 26 27#include <common.h> 28#if defined(CONFIG_CMD_IDE) 29#include <ata.h> 30#include <ide.h> 31#include <pci.h> 32 33extern ulong ide_bus_offset[CONFIG_SYS_IDE_MAXBUS]; 34 35int ide_preinit (void) 36{ 37 int status; 38 pci_dev_t devbusfn; 39 int l; 40 41 status = 1; 42 if (CPCI750_SLAVE_TEST != 0) 43 return status; 44 for (l = 0; l < CONFIG_SYS_IDE_MAXBUS; l++) { 45 ide_bus_offset[l] = -ATA_STATUS; 46 } 47 devbusfn = pci_find_device (0x1103, 0x0004, 0); 48 if (devbusfn == -1) 49 devbusfn = pci_find_device (0x1095, 0x3114, 0); 50 if (devbusfn != -1) { 51 ulong *ide_bus_offset_ptr; 52 53 status = 0; 54 55 ide_bus_offset_ptr = &ide_bus_offset[0]; 56 pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_0, 57 (u32 *)ide_bus_offset_ptr); 58 ide_bus_offset[0] &= 0xfffffffe; 59 ide_bus_offset[0] += CONFIG_SYS_PCI0_IO_SPACE; 60 ide_bus_offset_ptr = &ide_bus_offset[1]; 61 pci_read_config_dword (devbusfn, PCI_BASE_ADDRESS_2, 62 (u32 *)ide_bus_offset_ptr); 63 ide_bus_offset[1] &= 0xfffffffe; 64 ide_bus_offset[1] += CONFIG_SYS_PCI0_IO_SPACE; 65 } 66 return status; 67} 68 69void ide_set_reset (int flag) { 70 return; 71} 72 73#endif /* of CONFIG_CMDS_IDE */ 74