diff --git a/target/linux/adm5120-2.6/files/arch/mips/adm5120/setup.c b/target/linux/adm5120-2.6/files/arch/mips/adm5120/setup.c index 23e668411c..1b99d7799a 100644 --- a/target/linux/adm5120-2.6/files/arch/mips/adm5120/setup.c +++ b/target/linux/adm5120-2.6/files/arch/mips/adm5120/setup.c @@ -14,17 +14,12 @@ #include #include +#include + #define ADM5120_SOFTRESET 0x12000004 #define STATUS_IE 0x00000001 #define ALLINTS (IE_IRQ0 | IE_IRQ5 | STATUS_IE) -#define ADM5120_CODEREG 0x12000000 -#define ADM5120_CPU_CLK_MASK 0x00300000 -#define ADM5120_CPU_CLK_175 0x00000000 -#define ADM5120_CPU_CLK_200 0x00100000 -#define ADM5120_CPU_CLK_225 0x00200000 -#define ADM5120_CPU_CLK_250 0x00300000 - void mips_time_init(void); extern unsigned int mips_counter_frequency; @@ -47,30 +42,9 @@ void adm5120_power_off(void) adm5120_halt(); } -void __init mips_time_init(void) +void __init adm5120_time_init(void) { - u32 clock; - - clock = *(u32*)KSEG1ADDR(ADM5120_CODEREG); - - switch (clock & ADM5120_CPU_CLK_MASK) { - case ADM5120_CPU_CLK_175: - mips_counter_frequency = 87500000; - printk("CPU clock: 175MHz\n"); - break; - case ADM5120_CPU_CLK_200: - mips_counter_frequency = 100000000; - printk("CPU clock: 200MHz\n"); - break; - case ADM5120_CPU_CLK_225: - mips_counter_frequency = 112500000; - printk("CPU clock: 225MHz\n"); - break; - case ADM5120_CPU_CLK_250: - mips_counter_frequency = 125000000; - printk("CPU clock: 250MHz\n"); - break; - } + mips_counter_frequency = adm5120_info.cpu_speed >> 1; } void __init plat_timer_setup(struct irqaction *irq) @@ -85,7 +59,7 @@ void __init plat_mem_setup(void) { printk(KERN_INFO "ADM5120 board setup\n"); - board_time_init = mips_time_init; + board_time_init = adm5120_time_init; //board_timer_setup = mips_timer_setup; _machine_restart = adm5120_restart; diff --git a/target/linux/adm5120-2.6/files/arch/mips/pci/ops-adm5120.c b/target/linux/adm5120-2.6/files/arch/mips/pci/ops-adm5120.c index 80b8531eab..91dae89999 100644 --- a/target/linux/adm5120-2.6/files/arch/mips/pci/ops-adm5120.c +++ b/target/linux/adm5120-2.6/files/arch/mips/pci/ops-adm5120.c @@ -1,6 +1,8 @@ /* * Copyright (C) ADMtek Incorporated. * Copyright (C) 2005 Jeroen Vreeken (pe1rxq@amsat.org) + * Copyright (C) 2007 Gabor Juhos + * Copyright (C) 2007 OpenWrt.org */ #include @@ -9,11 +11,13 @@ #include #include -volatile u32* pci_config_address_reg = (volatile u32*)KSEG1ADDR(0x115ffff0); -volatile u32* pci_config_data_reg = (volatile u32*)KSEG1ADDR(0x115ffff8); +#include + +volatile u32* pci_config_address_reg = (volatile u32*)KSEG1ADDR(ADM5120_PCICFG_ADDR); +volatile u32* pci_config_data_reg = (volatile u32*)KSEG1ADDR(ADM5120_PCICFG_DATA); #define PCI_ENABLE 0x80000000 - + static int pci_config_read(struct pci_bus *bus, unsigned int devfn, int where, int size, uint32_t *val) { diff --git a/target/linux/adm5120-2.6/files/arch/mips/pci/pci-adm5120.c b/target/linux/adm5120-2.6/files/arch/mips/pci/pci-adm5120.c index bf46cc142a..78de001c50 100644 --- a/target/linux/adm5120-2.6/files/arch/mips/pci/pci-adm5120.c +++ b/target/linux/adm5120-2.6/files/arch/mips/pci/pci-adm5120.c @@ -1,6 +1,8 @@ /* * Copyright (C) ADMtek Incorporated. * Copyright (C) 2005 Jeroen Vreeken (pe1rxq@amsat.org) + * Copyright (C) 2007 Gabor Juhos + * Copyright (C) 2007 OpenWrt.org */ #include @@ -9,10 +11,10 @@ #include #include -extern struct pci_ops adm5120_pci_ops; +#include +#include -#define ADM5120_CODE 0x12000000 -#define ADM5120_CODE_PQFP 0x20000000 +extern struct pci_ops adm5120_pci_ops; #define PCI_CMM_IOACC_EN 0x1 #define PCI_CMM_MEMACC_EN 0x2 @@ -24,16 +26,16 @@ extern struct pci_ops adm5120_pci_ops; struct resource pci_io_resource = { - .name = "PCI IO space", - .start = 0x11500000, - .end = 0x115ffff0-1, + .name = "ADM5120 PCI I/O", + .start = ADM5120_PCIIO_BASE, + .end = ADM5120_PCICFG_ADDR-1, .flags = IORESOURCE_IO }; struct resource pci_mem_resource = { - .name = "PCI memory space", - .start = 0x11400000, - .end = 0x11500000, + .name = "ADM5120 PCI MEM", + .start = ADM5120_PCIMEM_BASE, + .end = ADM5120_PCIIO_BASE-1, .flags = IORESOURCE_MEM }; @@ -71,12 +73,13 @@ int pcibios_plat_dev_init(struct pci_dev *dev) static int __init adm5120_pci_setup(void) { + int pci_bios; - if ((*(volatile u32 *)(KSEG1ADDR(ADM5120_CODE))) & ADM5120_CODE_PQFP) { - printk("System has no PCI BIOS (ADM5120 PQFP)\n"); + pci_bios = adm5120_has_pci(); + + printk("adm5120: system has %sPCI BIOS\n", pci_bios ? "" : "no "); + if (pci_bios == 0) return 1; - } - printk("System has PCI BIOS (ADM5120 BGA)\n"); /* Avoid ISA compat ranges. */ PCIBIOS_MIN_IO = 0x00000000; @@ -84,7 +87,7 @@ static int __init adm5120_pci_setup(void) /* Set I/O resource limits. */ ioport_resource.end = 0x1fffffff; - iomem_resource.end = 0xffffffff; + iomem_resource.end = 0xffffffff; register_pci_controller(&adm5120_controller); return 0;