Commit 0d9787fa authored by Arnd Bergmann's avatar Arnd Bergmann

Merge branch 'footbridge/cleanup' of...

Merge branch 'footbridge/cleanup' of https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc into arm/soc

A cleanup for the footbridge platform that came out of inspecting
the platforms during the multiplatform conversion as well as the
dma address patches.

* 'footbridge/cleanup' of https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc:
  ARM: footbridge: remove custom DMA address handling
  ARM: footbridge: move isa-dma support into footbridge
  ARM: footbridge: remove leftover from personal-server
  ARM: footbridge: remove addin mode
parents 8a666046 be7f3f90
...@@ -989,11 +989,6 @@ config ISA ...@@ -989,11 +989,6 @@ config ISA
(MCA) or VESA. ISA is an older system, now being displaced by PCI; (MCA) or VESA. ISA is an older system, now being displaced by PCI;
newer boards don't support it. If you have ISA, say Y, otherwise N. newer boards don't support it. If you have ISA, say Y, otherwise N.
# Select ISA DMA controller support
config ISA_DMA
bool
select ISA_DMA_API
# Select ISA DMA interface # Select ISA DMA interface
config ISA_DMA_API config ISA_DMA_API
bool bool
......
...@@ -106,7 +106,7 @@ extern void set_dma_sg(unsigned int chan, struct scatterlist *sg, int nr_sg); ...@@ -106,7 +106,7 @@ extern void set_dma_sg(unsigned int chan, struct scatterlist *sg, int nr_sg);
*/ */
extern void __set_dma_addr(unsigned int chan, void *addr); extern void __set_dma_addr(unsigned int chan, void *addr);
#define set_dma_addr(chan, addr) \ #define set_dma_addr(chan, addr) \
__set_dma_addr(chan, (void *)__bus_to_virt(addr)) __set_dma_addr(chan, (void *)isa_bus_to_virt(addr))
/* Set the DMA byte count for this channel /* Set the DMA byte count for this channel
* *
......
...@@ -22,6 +22,13 @@ ...@@ -22,6 +22,13 @@
#define DC21285_IO(x) (x) #define DC21285_IO(x) (x)
#endif #endif
/*
* The footbridge is programmed to expose the system RAM at 0xe0000000.
* The requirement is that the RAM isn't placed at bus address 0, which
* would clash with VGA cards.
*/
#define BUS_OFFSET 0xe0000000
#define CSR_PCICMD DC21285_IO(0x0004) #define CSR_PCICMD DC21285_IO(0x0004)
#define CSR_CLASSREV DC21285_IO(0x0008) #define CSR_CLASSREV DC21285_IO(0x0008)
#define CSR_PCICACHELINESIZE DC21285_IO(0x000c) #define CSR_PCICACHELINESIZE DC21285_IO(0x000c)
...@@ -81,19 +88,6 @@ ...@@ -81,19 +88,6 @@
#define SA110_CNTL_XCSDIR(x) ((x)<<28) #define SA110_CNTL_XCSDIR(x) ((x)<<28)
#define SA110_CNTL_PCICFN (1 << 31) #define SA110_CNTL_PCICFN (1 << 31)
/*
* footbridge_cfn_mode() is used when we want
* to check whether we are the central function
*/
#define __footbridge_cfn_mode() (*CSR_SA110_CNTL & SA110_CNTL_PCICFN)
#if defined(CONFIG_FOOTBRIDGE_HOST) && defined(CONFIG_FOOTBRIDGE_ADDIN)
#define footbridge_cfn_mode() __footbridge_cfn_mode()
#elif defined(CONFIG_FOOTBRIDGE_HOST)
#define footbridge_cfn_mode() (1)
#else
#define footbridge_cfn_mode() (0)
#endif
#define CSR_PCIADDR_EXTN DC21285_IO(0x0140) #define CSR_PCIADDR_EXTN DC21285_IO(0x0140)
#define CSR_PREFETCHMEMRANGE DC21285_IO(0x0144) #define CSR_PREFETCHMEMRANGE DC21285_IO(0x0144)
#define CSR_XBUS_CYCLE DC21285_IO(0x0148) #define CSR_XBUS_CYCLE DC21285_IO(0x0148)
......
...@@ -44,8 +44,3 @@ struct dma_struct { ...@@ -44,8 +44,3 @@ struct dma_struct {
* isa_dma_add - add an ISA-style DMA channel * isa_dma_add - add an ISA-style DMA channel
*/ */
extern int isa_dma_add(unsigned int, dma_t *dma); extern int isa_dma_add(unsigned int, dma_t *dma);
/*
* Add the ISA DMA controller. Always takes channels 0-7.
*/
extern void isa_init_dma(void);
...@@ -369,17 +369,6 @@ static inline unsigned long __virt_to_idmap(unsigned long x) ...@@ -369,17 +369,6 @@ static inline unsigned long __virt_to_idmap(unsigned long x)
#define virt_to_idmap(x) __virt_to_idmap((unsigned long)(x)) #define virt_to_idmap(x) __virt_to_idmap((unsigned long)(x))
/*
* Virtual <-> DMA view memory address translations
* Again, these are *only* valid on the kernel direct mapped RAM
* memory. Use of these is *deprecated* (and that doesn't mean
* use the __ prefixed forms instead.) See dma-mapping.h.
*/
#ifndef __virt_to_bus
#define __virt_to_bus __virt_to_phys
#define __bus_to_virt __phys_to_virt
#endif
/* /*
* Conversion between a struct page and a physical address. * Conversion between a struct page and a physical address.
* *
......
...@@ -45,7 +45,6 @@ obj-$(CONFIG_ISA_DMA_API) += dma.o ...@@ -45,7 +45,6 @@ obj-$(CONFIG_ISA_DMA_API) += dma.o
obj-$(CONFIG_FIQ) += fiq.o fiqasm.o obj-$(CONFIG_FIQ) += fiq.o fiqasm.o
obj-$(CONFIG_MODULES) += armksyms.o module.o obj-$(CONFIG_MODULES) += armksyms.o module.o
obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o obj-$(CONFIG_ARM_MODULE_PLTS) += module-plts.o
obj-$(CONFIG_ISA_DMA) += dma-isa.o
obj-$(CONFIG_PCI) += bios32.o isa.o obj-$(CONFIG_PCI) += bios32.o isa.o
obj-$(CONFIG_ARM_CPU_SUSPEND) += sleep.o suspend.o obj-$(CONFIG_ARM_CPU_SUSPEND) += sleep.o suspend.o
obj-$(CONFIG_HIBERNATION) += hibernate.o obj-$(CONFIG_HIBERNATION) += hibernate.o
......
...@@ -8,31 +8,17 @@ config ARCH_CATS ...@@ -8,31 +8,17 @@ config ARCH_CATS
depends on UNUSED_BOARD_FILES depends on UNUSED_BOARD_FILES
select CLKEVT_I8253 select CLKEVT_I8253
select CLKSRC_I8253 select CLKSRC_I8253
select FOOTBRIDGE_HOST
select ISA select ISA
select ISA_DMA
select FORCE_PCI select FORCE_PCI
help help
Say Y here if you intend to run this kernel on the CATS. Say Y here if you intend to run this kernel on the CATS.
Saying N will reduce the size of the Footbridge kernel. Saying N will reduce the size of the Footbridge kernel.
config ARCH_EBSA285_ADDIN
bool "EBSA285 (addin mode)"
select ARCH_EBSA285
select FOOTBRIDGE_ADDIN
help
Say Y here if you intend to run this kernel on the EBSA285 card
in addin mode.
Saying N will reduce the size of the Footbridge kernel.
config ARCH_EBSA285_HOST config ARCH_EBSA285_HOST
bool "EBSA285 (host mode)" bool "EBSA285 (host mode)"
select ARCH_EBSA285 select ARCH_EBSA285
select FOOTBRIDGE_HOST
select ISA select ISA
select ISA_DMA
select ARCH_MAY_HAVE_PC_FDC select ARCH_MAY_HAVE_PC_FDC
select FORCE_PCI select FORCE_PCI
help help
...@@ -45,9 +31,7 @@ config ARCH_NETWINDER ...@@ -45,9 +31,7 @@ config ARCH_NETWINDER
bool "NetWinder" bool "NetWinder"
select CLKEVT_I8253 select CLKEVT_I8253
select CLKSRC_I8253 select CLKSRC_I8253
select FOOTBRIDGE_HOST
select ISA select ISA
select ISA_DMA
select FORCE_PCI select FORCE_PCI
help help
Say Y here if you intend to run this kernel on the Rebel.COM Say Y here if you intend to run this kernel on the Rebel.COM
...@@ -61,19 +45,10 @@ endmenu ...@@ -61,19 +45,10 @@ endmenu
# Footbridge support # Footbridge support
config FOOTBRIDGE config FOOTBRIDGE
select ARCH_HAS_PHYS_TO_DMA def_bool y
bool
# Footbridge in host mode
config FOOTBRIDGE_HOST
bool
select ARCH_MIGHT_HAVE_PC_SERIO select ARCH_MIGHT_HAVE_PC_SERIO
select ISA_DMA_API
# Footbridge in addin mode
config FOOTBRIDGE_ADDIN
bool
# EBSA285 board in either host or addin mode
config ARCH_EBSA285 config ARCH_EBSA285
bool bool
......
...@@ -5,11 +5,11 @@ ...@@ -5,11 +5,11 @@
# Object file lists. # Object file lists.
obj-y := common.o dma.o isa-irq.o obj-y := common.o isa-irq.o isa.o isa-rtc.o dma-isa.o
pci-y += dc21285.o pci-y += dc21285.o
pci-$(CONFIG_ARCH_CATS) += cats-pci.o pci-$(CONFIG_ARCH_CATS) += cats-pci.o
pci-$(CONFIG_ARCH_EBSA285_HOST) += ebsa285-pci.o pci-$(CONFIG_ARCH_EBSA285) += ebsa285-pci.o
pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o pci-$(CONFIG_ARCH_NETWINDER) += netwinder-pci.o
obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o obj-$(CONFIG_ARCH_CATS) += cats-hw.o isa-timer.o
...@@ -18,4 +18,3 @@ obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o ...@@ -18,4 +18,3 @@ obj-$(CONFIG_ARCH_NETWINDER) += netwinder-hw.o isa-timer.o
obj-$(CONFIG_PCI) +=$(pci-y) obj-$(CONFIG_PCI) +=$(pci-y)
obj-$(CONFIG_ISA) += isa.o isa-rtc.o
...@@ -198,9 +198,6 @@ void __init footbridge_init_irq(void) ...@@ -198,9 +198,6 @@ void __init footbridge_init_irq(void)
__fb_init_irq(); __fb_init_irq();
if (!footbridge_cfn_mode())
return;
if (machine_is_ebsa285()) if (machine_is_ebsa285())
/* The following is dependent on which slot /* The following is dependent on which slot
* you plug the Southbridge card into. We * you plug the Southbridge card into. We
...@@ -221,21 +218,13 @@ void __init footbridge_init_irq(void) ...@@ -221,21 +218,13 @@ void __init footbridge_init_irq(void)
* commented out since there is a "No Fix" problem with it. Not mapping * commented out since there is a "No Fix" problem with it. Not mapping
* it means that we have extra bullet protection on our feet. * it means that we have extra bullet protection on our feet.
*/ */
static struct map_desc fb_common_io_desc[] __initdata = { static struct map_desc ebsa285_host_io_desc[] __initdata = {
{ {
.virtual = ARMCSR_BASE, .virtual = ARMCSR_BASE,
.pfn = __phys_to_pfn(DC21285_ARMCSR_BASE), .pfn = __phys_to_pfn(DC21285_ARMCSR_BASE),
.length = ARMCSR_SIZE, .length = ARMCSR_SIZE,
.type = MT_DEVICE, .type = MT_DEVICE,
} },
};
/*
* The mapping when the footbridge is in host mode. We don't map any of
* this when we are in add-in mode.
*/
static struct map_desc ebsa285_host_io_desc[] __initdata = {
#if defined(CONFIG_ARCH_FOOTBRIDGE) && defined(CONFIG_FOOTBRIDGE_HOST)
{ {
.virtual = PCIMEM_BASE, .virtual = PCIMEM_BASE,
.pfn = __phys_to_pfn(DC21285_PCI_MEM), .pfn = __phys_to_pfn(DC21285_PCI_MEM),
...@@ -257,26 +246,12 @@ static struct map_desc ebsa285_host_io_desc[] __initdata = { ...@@ -257,26 +246,12 @@ static struct map_desc ebsa285_host_io_desc[] __initdata = {
.length = PCIIACK_SIZE, .length = PCIIACK_SIZE,
.type = MT_DEVICE, .type = MT_DEVICE,
}, },
#endif
}; };
void __init footbridge_map_io(void) void __init footbridge_map_io(void)
{ {
/*
* Set up the common mapping first; we need this to
* determine whether we're in host mode or not.
*/
iotable_init(fb_common_io_desc, ARRAY_SIZE(fb_common_io_desc));
/*
* Now, work out what we've got to map in addition on this
* platform.
*/
if (footbridge_cfn_mode()) {
iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc)); iotable_init(ebsa285_host_io_desc, ARRAY_SIZE(ebsa285_host_io_desc));
pci_map_io_early(__phys_to_pfn(DC21285_PCI_IO)); pci_map_io_early(__phys_to_pfn(DC21285_PCI_IO));
}
vga_base = PCIMEM_BASE; vga_base = PCIMEM_BASE;
} }
...@@ -306,49 +281,3 @@ void footbridge_restart(enum reboot_mode mode, const char *cmd) ...@@ -306,49 +281,3 @@ void footbridge_restart(enum reboot_mode mode, const char *cmd)
*CSR_SA110_CNTL |= (1 << 13); *CSR_SA110_CNTL |= (1 << 13);
} }
} }
#ifdef CONFIG_FOOTBRIDGE_ADDIN
static inline unsigned long fb_bus_sdram_offset(void)
{
return *CSR_PCISDRAMBASE & 0xfffffff0;
}
/*
* These two functions convert virtual addresses to PCI addresses and PCI
* addresses to virtual addresses. Note that it is only legal to use these
* on memory obtained via get_zeroed_page or kmalloc.
*/
unsigned long __virt_to_bus(unsigned long res)
{
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
return res + (fb_bus_sdram_offset() - PAGE_OFFSET);
}
EXPORT_SYMBOL(__virt_to_bus);
unsigned long __bus_to_virt(unsigned long res)
{
res = res - (fb_bus_sdram_offset() - PAGE_OFFSET);
WARN_ON(res < PAGE_OFFSET || res >= (unsigned long)high_memory);
return res;
}
EXPORT_SYMBOL(__bus_to_virt);
#else
static inline unsigned long fb_bus_sdram_offset(void)
{
return BUS_OFFSET;
}
#endif /* CONFIG_FOOTBRIDGE_ADDIN */
dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr)
{
return paddr + (fb_bus_sdram_offset() - PHYS_OFFSET);
}
phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr)
{
return dev_addr - (fb_bus_sdram_offset() - PHYS_OFFSET);
}
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* Copyright (C) 1998-2001 Russell King * Copyright (C) 1998-2001 Russell King
* Copyright (C) 1998-2000 Phil Blundell * Copyright (C) 1998-2000 Phil Blundell
*/ */
#include <linux/dma-map-ops.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
...@@ -241,13 +242,26 @@ static irqreturn_t dc21285_parity_irq(int irq, void *dev_id) ...@@ -241,13 +242,26 @@ static irqreturn_t dc21285_parity_irq(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static int dc21285_pci_bus_notifier(struct notifier_block *nb,
unsigned long action,
void *data)
{
if (action != BUS_NOTIFY_ADD_DEVICE)
return NOTIFY_DONE;
dma_direct_set_offset(data, PHYS_OFFSET, BUS_OFFSET, SZ_256M);
return NOTIFY_OK;
}
static struct notifier_block dc21285_pci_bus_nb = {
.notifier_call = dc21285_pci_bus_notifier,
};
int __init dc21285_setup(int nr, struct pci_sys_data *sys) int __init dc21285_setup(int nr, struct pci_sys_data *sys)
{ {
struct resource *res; struct resource *res;
if (nr || !footbridge_cfn_mode())
return 0;
res = kcalloc(2, sizeof(struct resource), GFP_KERNEL); res = kcalloc(2, sizeof(struct resource), GFP_KERNEL);
if (!res) { if (!res) {
printk("out of memory for root bus resources"); printk("out of memory for root bus resources");
...@@ -269,6 +283,8 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys) ...@@ -269,6 +283,8 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys)
pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset); pci_add_resource_offset(&sys->resources, &res[0], sys->mem_offset);
pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset); pci_add_resource_offset(&sys->resources, &res[1], sys->mem_offset);
bus_register_notifier(&pci_bus_type, &dc21285_pci_bus_nb);
return 1; return 1;
} }
...@@ -278,7 +294,6 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys) ...@@ -278,7 +294,6 @@ int __init dc21285_setup(int nr, struct pci_sys_data *sys)
void __init dc21285_preinit(void) void __init dc21285_preinit(void)
{ {
unsigned int mem_size, mem_mask; unsigned int mem_size, mem_mask;
int cfn_mode;
pcibios_min_mem = 0x81000000; pcibios_min_mem = 0x81000000;
...@@ -298,21 +313,15 @@ void __init dc21285_preinit(void) ...@@ -298,21 +313,15 @@ void __init dc21285_preinit(void)
*CSR_CSRBASEOFFSET = 0; *CSR_CSRBASEOFFSET = 0;
*CSR_PCIADDR_EXTN = 0; *CSR_PCIADDR_EXTN = 0;
cfn_mode = __footbridge_cfn_mode();
printk(KERN_INFO "PCI: DC21285 footbridge, revision %02lX, in " printk(KERN_INFO "PCI: DC21285 footbridge, revision %02lX, in "
"%s mode\n", *CSR_CLASSREV & 0xff, cfn_mode ? "central function mode\n", *CSR_CLASSREV & 0xff);
"central function" : "addin");
if (footbridge_cfn_mode()) {
/* /*
* Clear any existing errors - we aren't * Clear any existing errors - we aren't
* interested in historical data... * interested in historical data...
*/ */
*CSR_SA110_CNTL = (*CSR_SA110_CNTL & 0xffffde07) | *CSR_SA110_CNTL = (*CSR_SA110_CNTL & 0xffffde07) | SA110_CNTL_RXSERR;
SA110_CNTL_RXSERR;
*CSR_PCICMD = (*CSR_PCICMD & 0xffff) | PCICMD_ERROR_BITS; *CSR_PCICMD = (*CSR_PCICMD & 0xffff) | PCICMD_ERROR_BITS;
}
timer_setup(&serr_timer, dc21285_enable_error, 0); timer_setup(&serr_timer, dc21285_enable_error, 0);
timer_setup(&perr_timer, dc21285_enable_error, 0); timer_setup(&perr_timer, dc21285_enable_error, 0);
...@@ -331,7 +340,6 @@ void __init dc21285_preinit(void) ...@@ -331,7 +340,6 @@ void __init dc21285_preinit(void)
dc21285_request_irq(IRQ_PCI_DPERR, dc21285_dparity_irq, 0, dc21285_request_irq(IRQ_PCI_DPERR, dc21285_dparity_irq, 0,
"PCI data parity", NULL); "PCI data parity", NULL);
if (cfn_mode) {
/* /*
* Map our SDRAM at a known address in PCI space, just in case * Map our SDRAM at a known address in PCI space, just in case
* the firmware had other ideas. Using a nonzero base is * the firmware had other ideas. Using a nonzero base is
...@@ -340,20 +348,10 @@ void __init dc21285_preinit(void) ...@@ -340,20 +348,10 @@ void __init dc21285_preinit(void)
*/ */
*CSR_PCICSRBASE = 0xf4000000; *CSR_PCICSRBASE = 0xf4000000;
*CSR_PCICSRIOBASE = 0; *CSR_PCICSRIOBASE = 0;
*CSR_PCISDRAMBASE = __virt_to_bus(PAGE_OFFSET); *CSR_PCISDRAMBASE = BUS_OFFSET;
*CSR_PCIROMBASE = 0; *CSR_PCIROMBASE = 0;
*CSR_PCICMD = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER | *CSR_PCICMD = PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER |
PCI_COMMAND_INVALIDATE | PCICMD_ERROR_BITS; PCI_COMMAND_INVALIDATE | PCICMD_ERROR_BITS;
} else if (footbridge_cfn_mode() != 0) {
/*
* If we are not compiled to accept "add-in" mode, then
* we are using a constant virt_to_bus translation which
* can not hope to cater for the way the host BIOS has
* set up the machine.
*/
panic("PCI: this kernel is compiled for central "
"function mode only");
}
} }
void __init dc21285_postinit(void) void __init dc21285_postinit(void)
......
// SPDX-License-Identifier: GPL-2.0-only // SPDX-License-Identifier: GPL-2.0-only
/* /*
* linux/arch/arm/kernel/dma-isa.c
*
* Copyright (C) 1999-2000 Russell King * Copyright (C) 1999-2000 Russell King
* *
* ISA DMA primitives * ISA DMA primitives
...@@ -13,6 +11,7 @@ ...@@ -13,6 +11,7 @@
* arch/arm/kernel/dma-ebsa285.c * arch/arm/kernel/dma-ebsa285.c
* Copyright (C) 1998 Phil Blundell * Copyright (C) 1998 Phil Blundell
*/ */
#include <linux/dma-map-ops.h>
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
...@@ -20,6 +19,7 @@ ...@@ -20,6 +19,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/mach/dma.h> #include <asm/mach/dma.h>
#include <asm/hardware/dec21285.h>
#define ISA_DMA_MASK 0 #define ISA_DMA_MASK 0
#define ISA_DMA_MODE 1 #define ISA_DMA_MODE 1
...@@ -157,7 +157,7 @@ static dma_t isa_dma[8]; ...@@ -157,7 +157,7 @@ static dma_t isa_dma[8];
/* /*
* ISA DMA always starts at channel 0 * ISA DMA always starts at channel 0
*/ */
void __init isa_init_dma(void) static int __init isa_dma_init(void)
{ {
/* /*
* Try to autodetect presence of an ISA DMA controller. * Try to autodetect presence of an ISA DMA controller.
...@@ -222,4 +222,9 @@ void __init isa_init_dma(void) ...@@ -222,4 +222,9 @@ void __init isa_init_dma(void)
request_dma(DMA_ISA_CASCADE, "cascade"); request_dma(DMA_ISA_CASCADE, "cascade");
} }
dma_direct_set_offset(&isa_dma_dev, PHYS_OFFSET, BUS_OFFSET, SZ_256M);
return 0;
} }
core_initcall(isa_dma_init);
// SPDX-License-Identifier: GPL-2.0
/*
* linux/arch/arm/kernel/dma-ebsa285.c
*
* Copyright (C) 1998 Phil Blundell
*
* DMA functions specific to EBSA-285/CATS architectures
*
* Changelog:
* 09-Nov-1998 RMK Split out ISA DMA functions to dma-isa.c
* 17-Mar-1999 RMK Allow any EBSA285-like architecture to have
* ISA DMA controllers.
*/
#include <linux/init.h>
#include <linux/io.h>
#include <linux/spinlock.h>
#include <linux/scatterlist.h>
#include <asm/dma.h>
#include <asm/mach/dma.h>
#include <asm/hardware/dec21285.h>
#if 0
static int fb_dma_request(unsigned int chan, dma_t *dma)
{
return -EINVAL;
}
static void fb_dma_enable(unsigned int chan, dma_t *dma)
{
}
static void fb_dma_disable(unsigned int chan, dma_t *dma)
{
}
static struct dma_ops fb_dma_ops = {
.type = "fb",
.request = fb_dma_request,
.enable = fb_dma_enable,
.disable = fb_dma_disable,
};
#endif
static int __init fb_dma_init(void)
{
#if 0
dma[_DC21285_DMA(0)].d_ops = &fb_dma_ops;
dma[_DC21285_DMA(1)].d_ops = &fb_dma_ops;
#endif
#ifdef CONFIG_ISA_DMA
if (footbridge_cfn_mode())
isa_init_dma();
#endif
return 0;
}
core_initcall(fb_dma_init);
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef MACH_FOOTBRIDGE_DMA_DIRECT_H
#define MACH_FOOTBRIDGE_DMA_DIRECT_H 1
dma_addr_t phys_to_dma(struct device *dev, phys_addr_t paddr);
phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dev_addr);
#endif /* MACH_FOOTBRIDGE_DMA_DIRECT_H */
...@@ -10,17 +10,9 @@ ...@@ -10,17 +10,9 @@
#ifndef __ASM_ARCH_DMA_H #ifndef __ASM_ARCH_DMA_H
#define __ASM_ARCH_DMA_H #define __ASM_ARCH_DMA_H
/* #define MAX_DMA_CHANNELS 8
* The 21285 has two internal DMA channels; we call these 8 and 9.
* On CATS hardware we have an additional eight ISA dma channels
* numbered 0..7.
*/
#define _ISA_DMA(x) (0+(x))
#define _DC21285_DMA(x) (8+(x))
#define MAX_DMA_CHANNELS 10
#define DMA_FLOPPY _ISA_DMA(2) #define DMA_FLOPPY (2)
#define DMA_ISA_CASCADE _ISA_DMA(4) #define DMA_ISA_CASCADE (4)
#endif /* _ASM_ARCH_DMA_H */ #endif /* _ASM_ARCH_DMA_H */
...@@ -16,37 +16,6 @@ ...@@ -16,37 +16,6 @@
#ifndef __ASM_ARCH_MEMORY_H #ifndef __ASM_ARCH_MEMORY_H
#define __ASM_ARCH_MEMORY_H #define __ASM_ARCH_MEMORY_H
#if defined(CONFIG_FOOTBRIDGE_ADDIN)
/*
* If we may be using add-in footbridge mode, then we must
* use the out-of-line translation that makes use of the
* PCI BAR
*/
#ifndef __ASSEMBLY__
extern unsigned long __virt_to_bus(unsigned long);
extern unsigned long __bus_to_virt(unsigned long);
#endif
#define __virt_to_bus __virt_to_bus
#define __bus_to_virt __bus_to_virt
#elif defined(CONFIG_FOOTBRIDGE_HOST)
/*
* The footbridge is programmed to expose the system RAM at 0xe0000000.
* The requirement is that the RAM isn't placed at bus address 0, which
* would clash with VGA cards.
*/
#define BUS_OFFSET 0xe0000000
#define __virt_to_bus(x) ((x) + (BUS_OFFSET - PAGE_OFFSET))
#define __bus_to_virt(x) ((x) - (BUS_OFFSET - PAGE_OFFSET))
#else
#error "Undefined footbridge mode"
#endif
/* /*
* Cache flushing area. * Cache flushing area.
*/ */
......
...@@ -79,16 +79,12 @@ static int __init footbridge_isa_init(void) ...@@ -79,16 +79,12 @@ static int __init footbridge_isa_init(void)
{ {
int err = 0; int err = 0;
if (!footbridge_cfn_mode())
return 0;
/* Personal server doesn't have RTC */ /* Personal server doesn't have RTC */
if (!machine_is_personal_server()) {
isa_rtc_init(); isa_rtc_init();
err = platform_device_register(&rtc_device); err = platform_device_register(&rtc_device);
if (err) if (err)
printk(KERN_ERR "Unable to register RTC device: %d\n", err); printk(KERN_ERR "Unable to register RTC device: %d\n", err);
}
err = platform_device_register(&serial_device); err = platform_device_register(&serial_device);
if (err) if (err)
printk(KERN_ERR "Unable to register serial device: %d\n", err); printk(KERN_ERR "Unable to register serial device: %d\n", err);
......
...@@ -461,9 +461,6 @@ static int __init serial21285_console_setup(struct console *co, char *options) ...@@ -461,9 +461,6 @@ static int __init serial21285_console_setup(struct console *co, char *options)
int parity = 'n'; int parity = 'n';
int flow = 'n'; int flow = 'n';
if (machine_is_personal_server())
baud = 57600;
/* /*
* Check whether an invalid uart number has been specified, and * Check whether an invalid uart number has been specified, and
* if so, search for the first available port that does have * if so, search for the first available port that does have
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment