2 * This file is subject to the terms and conditions of the GNU General Public
3 * License. See the file "COPYING" in the main directory of this archive
6 * Copyright (C) 2004 by Ralf Baechle
9 #include <linux/init.h>
10 #include <linux/kernel.h>
11 #include <linux/types.h>
12 #include <linux/pci.h>
13 #include <asm/gt64240.h>
14 #include <asm/pci_channel.h>
16 extern struct pci_ops titan_pci_ops;
18 static struct resource py_mem_resource = {
19 "Titan PCI MEM", 0xe0000000UL, 0xe3ffffffUL, IORESOURCE_MEM
23 * PMON really reserves 16MB of I/O port space but that's stupid, nothing
24 * needs that much since allocations are limited to 256 bytes per device
25 * anyway. So we just claim 64kB here.
27 #define TITAN_IO_SIZE 0x0000ffffUL
29 static struct resource py_io_resource = {
30 "Titan IO MEM", 0x00001000UL, TITAN_IO_SIZE - 1, IORESOURCE_IO,
33 static struct pci_controller py_controller = {
34 .pci_ops = &titan_pci_ops,
35 .mem_resource = &py_mem_resource,
36 .mem_offset = 0x00000000UL,
37 .io_resource = &py_io_resource,
38 .io_offset = 0x00000000UL
41 static char ioremap_failed[] __initdata = "Could not ioremap I/O port range";
43 static int __init pmc_yosemite_setup(void)
45 unsigned long io_v_base;
47 io_v_base = (unsigned long) ioremap(0xe0000000UL,TITAN_IO_SIZE);
49 panic(ioremap_failed);
51 set_io_port_base(io_v_base);
53 ioport_resource.end = TITAN_IO_SIZE - 1;
55 register_pci_controller(&py_controller);
60 arch_initcall(pmc_yosemite_setup);