mirror of
https://github.com/armbian/linux-cix.git
synced 2026-01-06 12:30:45 -08:00
MIPS: TXX9: Remove rbtx4939 board support
No active MIPS user own this board, so let's remove it. Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Tested-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
@@ -10,7 +10,6 @@ CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MACH_TX49XX=y
|
||||
CONFIG_TOSHIBA_RBTX4927=y
|
||||
CONFIG_TOSHIBA_RBTX4939=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_MODULES=y
|
||||
@@ -36,7 +35,6 @@ CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_RBTX4939=y
|
||||
CONFIG_MTD_RAW_NAND=m
|
||||
CONFIG_MTD_NAND_TXX9NDFMC=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
||||
@@ -9,16 +9,8 @@
|
||||
|
||||
#define ioswabb(a, x) (x)
|
||||
#define __mem_ioswabb(a, x) (x)
|
||||
#if defined(CONFIG_TOSHIBA_RBTX4939) && \
|
||||
IS_ENABLED(CONFIG_SMC91X) && \
|
||||
defined(__BIG_ENDIAN)
|
||||
#define NEEDS_TXX9_IOSWABW
|
||||
extern u16 (*ioswabw)(volatile u16 *a, u16 x);
|
||||
extern u16 (*__mem_ioswabw)(volatile u16 *a, u16 x);
|
||||
#else
|
||||
#define ioswabw(a, x) le16_to_cpu((__force __le16)(x))
|
||||
#define __mem_ioswabw(a, x) (x)
|
||||
#endif
|
||||
#define ioswabl(a, x) le32_to_cpu((__force __le32)(x))
|
||||
#define __mem_ioswabl(a, x) (x)
|
||||
#define ioswabq(a, x) le64_to_cpu((__force __le64)(x))
|
||||
|
||||
@@ -6,6 +6,3 @@ BOARD_VEC(jmr3927_vec)
|
||||
BOARD_VEC(rbtx4927_vec)
|
||||
BOARD_VEC(rbtx4937_vec)
|
||||
#endif
|
||||
#ifdef CONFIG_TOSHIBA_RBTX4939
|
||||
BOARD_VEC(rbtx4939_vec)
|
||||
#endif
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
/*
|
||||
* Definitions for RBTX4939
|
||||
*
|
||||
* (C) Copyright TOSHIBA CORPORATION 2005-2006
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*/
|
||||
#ifndef __ASM_TXX9_RBTX4939_H
|
||||
#define __ASM_TXX9_RBTX4939_H
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/txx9irq.h>
|
||||
#include <asm/txx9/generic.h>
|
||||
#include <asm/txx9/tx4939.h>
|
||||
|
||||
/* Address map */
|
||||
#define RBTX4939_IOC_REG_ADDR (IO_BASE + TXX9_CE(1) + 0x00000000)
|
||||
#define RBTX4939_BOARD_REV_ADDR (IO_BASE + TXX9_CE(1) + 0x00000000)
|
||||
#define RBTX4939_IOC_REV_ADDR (IO_BASE + TXX9_CE(1) + 0x00000002)
|
||||
#define RBTX4939_CONFIG1_ADDR (IO_BASE + TXX9_CE(1) + 0x00000004)
|
||||
#define RBTX4939_CONFIG2_ADDR (IO_BASE + TXX9_CE(1) + 0x00000006)
|
||||
#define RBTX4939_CONFIG3_ADDR (IO_BASE + TXX9_CE(1) + 0x00000008)
|
||||
#define RBTX4939_CONFIG4_ADDR (IO_BASE + TXX9_CE(1) + 0x0000000a)
|
||||
#define RBTX4939_USTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00001000)
|
||||
#define RBTX4939_UDIPSW_ADDR (IO_BASE + TXX9_CE(1) + 0x00001002)
|
||||
#define RBTX4939_BDIPSW_ADDR (IO_BASE + TXX9_CE(1) + 0x00001004)
|
||||
#define RBTX4939_IEN_ADDR (IO_BASE + TXX9_CE(1) + 0x00002000)
|
||||
#define RBTX4939_IPOL_ADDR (IO_BASE + TXX9_CE(1) + 0x00002002)
|
||||
#define RBTX4939_IFAC1_ADDR (IO_BASE + TXX9_CE(1) + 0x00002004)
|
||||
#define RBTX4939_IFAC2_ADDR (IO_BASE + TXX9_CE(1) + 0x00002006)
|
||||
#define RBTX4939_SOFTINT_ADDR (IO_BASE + TXX9_CE(1) + 0x00003000)
|
||||
#define RBTX4939_ISASTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00004000)
|
||||
#define RBTX4939_PCISTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00004002)
|
||||
#define RBTX4939_ROME_ADDR (IO_BASE + TXX9_CE(1) + 0x00004004)
|
||||
#define RBTX4939_SPICS_ADDR (IO_BASE + TXX9_CE(1) + 0x00004006)
|
||||
#define RBTX4939_AUDI_ADDR (IO_BASE + TXX9_CE(1) + 0x00004008)
|
||||
#define RBTX4939_ISAGPIO_ADDR (IO_BASE + TXX9_CE(1) + 0x0000400a)
|
||||
#define RBTX4939_PE1_ADDR (IO_BASE + TXX9_CE(1) + 0x00005000)
|
||||
#define RBTX4939_PE2_ADDR (IO_BASE + TXX9_CE(1) + 0x00005002)
|
||||
#define RBTX4939_PE3_ADDR (IO_BASE + TXX9_CE(1) + 0x00005004)
|
||||
#define RBTX4939_VP_ADDR (IO_BASE + TXX9_CE(1) + 0x00005006)
|
||||
#define RBTX4939_VPRESET_ADDR (IO_BASE + TXX9_CE(1) + 0x00005008)
|
||||
#define RBTX4939_VPSOUT_ADDR (IO_BASE + TXX9_CE(1) + 0x0000500a)
|
||||
#define RBTX4939_VPSIN_ADDR (IO_BASE + TXX9_CE(1) + 0x0000500c)
|
||||
#define RBTX4939_7SEG_ADDR(s, ch) \
|
||||
(IO_BASE + TXX9_CE(1) + 0x00006000 + (s) * 16 + ((ch) & 3) * 2)
|
||||
#define RBTX4939_SOFTRESET_ADDR (IO_BASE + TXX9_CE(1) + 0x00007000)
|
||||
#define RBTX4939_RESETEN_ADDR (IO_BASE + TXX9_CE(1) + 0x00007002)
|
||||
#define RBTX4939_RESETSTAT_ADDR (IO_BASE + TXX9_CE(1) + 0x00007004)
|
||||
#define RBTX4939_ETHER_BASE (IO_BASE + TXX9_CE(1) + 0x00020000)
|
||||
|
||||
/* Ethernet port address */
|
||||
#define RBTX4939_ETHER_ADDR (RBTX4939_ETHER_BASE + 0x300)
|
||||
|
||||
/* bits for IEN/IPOL/IFAC */
|
||||
#define RBTX4938_INTB_ISA0 0
|
||||
#define RBTX4938_INTB_ISA11 1
|
||||
#define RBTX4938_INTB_ISA12 2
|
||||
#define RBTX4938_INTB_ISA15 3
|
||||
#define RBTX4938_INTB_I2S 4
|
||||
#define RBTX4938_INTB_SW 5
|
||||
#define RBTX4938_INTF_ISA0 (1 << RBTX4938_INTB_ISA0)
|
||||
#define RBTX4938_INTF_ISA11 (1 << RBTX4938_INTB_ISA11)
|
||||
#define RBTX4938_INTF_ISA12 (1 << RBTX4938_INTB_ISA12)
|
||||
#define RBTX4938_INTF_ISA15 (1 << RBTX4938_INTB_ISA15)
|
||||
#define RBTX4938_INTF_I2S (1 << RBTX4938_INTB_I2S)
|
||||
#define RBTX4938_INTF_SW (1 << RBTX4938_INTB_SW)
|
||||
|
||||
/* bits for PE1,PE2,PE3 */
|
||||
#define RBTX4939_PE1_ATA(ch) (0x01 << (ch))
|
||||
#define RBTX4939_PE1_RMII(ch) (0x04 << (ch))
|
||||
#define RBTX4939_PE2_SIO0 0x01
|
||||
#define RBTX4939_PE2_SIO2 0x02
|
||||
#define RBTX4939_PE2_SIO3 0x04
|
||||
#define RBTX4939_PE2_CIR 0x08
|
||||
#define RBTX4939_PE2_SPI 0x10
|
||||
#define RBTX4939_PE2_GPIO 0x20
|
||||
#define RBTX4939_PE3_VP 0x01
|
||||
#define RBTX4939_PE3_VP_P 0x02
|
||||
#define RBTX4939_PE3_VP_S 0x04
|
||||
|
||||
#define rbtx4939_board_rev_addr ((u8 __iomem *)RBTX4939_BOARD_REV_ADDR)
|
||||
#define rbtx4939_ioc_rev_addr ((u8 __iomem *)RBTX4939_IOC_REV_ADDR)
|
||||
#define rbtx4939_config1_addr ((u8 __iomem *)RBTX4939_CONFIG1_ADDR)
|
||||
#define rbtx4939_config2_addr ((u8 __iomem *)RBTX4939_CONFIG2_ADDR)
|
||||
#define rbtx4939_config3_addr ((u8 __iomem *)RBTX4939_CONFIG3_ADDR)
|
||||
#define rbtx4939_config4_addr ((u8 __iomem *)RBTX4939_CONFIG4_ADDR)
|
||||
#define rbtx4939_ustat_addr ((u8 __iomem *)RBTX4939_USTAT_ADDR)
|
||||
#define rbtx4939_udipsw_addr ((u8 __iomem *)RBTX4939_UDIPSW_ADDR)
|
||||
#define rbtx4939_bdipsw_addr ((u8 __iomem *)RBTX4939_BDIPSW_ADDR)
|
||||
#define rbtx4939_ien_addr ((u8 __iomem *)RBTX4939_IEN_ADDR)
|
||||
#define rbtx4939_ipol_addr ((u8 __iomem *)RBTX4939_IPOL_ADDR)
|
||||
#define rbtx4939_ifac1_addr ((u8 __iomem *)RBTX4939_IFAC1_ADDR)
|
||||
#define rbtx4939_ifac2_addr ((u8 __iomem *)RBTX4939_IFAC2_ADDR)
|
||||
#define rbtx4939_softint_addr ((u8 __iomem *)RBTX4939_SOFTINT_ADDR)
|
||||
#define rbtx4939_isastat_addr ((u8 __iomem *)RBTX4939_ISASTAT_ADDR)
|
||||
#define rbtx4939_pcistat_addr ((u8 __iomem *)RBTX4939_PCISTAT_ADDR)
|
||||
#define rbtx4939_rome_addr ((u8 __iomem *)RBTX4939_ROME_ADDR)
|
||||
#define rbtx4939_spics_addr ((u8 __iomem *)RBTX4939_SPICS_ADDR)
|
||||
#define rbtx4939_audi_addr ((u8 __iomem *)RBTX4939_AUDI_ADDR)
|
||||
#define rbtx4939_isagpio_addr ((u8 __iomem *)RBTX4939_ISAGPIO_ADDR)
|
||||
#define rbtx4939_pe1_addr ((u8 __iomem *)RBTX4939_PE1_ADDR)
|
||||
#define rbtx4939_pe2_addr ((u8 __iomem *)RBTX4939_PE2_ADDR)
|
||||
#define rbtx4939_pe3_addr ((u8 __iomem *)RBTX4939_PE3_ADDR)
|
||||
#define rbtx4939_vp_addr ((u8 __iomem *)RBTX4939_VP_ADDR)
|
||||
#define rbtx4939_vpreset_addr ((u8 __iomem *)RBTX4939_VPRESET_ADDR)
|
||||
#define rbtx4939_vpsout_addr ((u8 __iomem *)RBTX4939_VPSOUT_ADDR)
|
||||
#define rbtx4939_vpsin_addr ((u8 __iomem *)RBTX4939_VPSIN_ADDR)
|
||||
#define rbtx4939_7seg_addr(s, ch) \
|
||||
((u8 __iomem *)RBTX4939_7SEG_ADDR(s, ch))
|
||||
#define rbtx4939_softreset_addr ((u8 __iomem *)RBTX4939_SOFTRESET_ADDR)
|
||||
#define rbtx4939_reseten_addr ((u8 __iomem *)RBTX4939_RESETEN_ADDR)
|
||||
#define rbtx4939_resetstat_addr ((u8 __iomem *)RBTX4939_RESETSTAT_ADDR)
|
||||
|
||||
/*
|
||||
* IRQ mappings
|
||||
*/
|
||||
#define RBTX4939_NR_IRQ_IOC 8
|
||||
|
||||
#define RBTX4939_IRQ_IOC (TXX9_IRQ_BASE + TX4939_NUM_IR)
|
||||
#define RBTX4939_IRQ_END (RBTX4939_IRQ_IOC + RBTX4939_NR_IRQ_IOC)
|
||||
|
||||
/* IOC (ISA, etc) */
|
||||
#define RBTX4939_IRQ_IOCINT (TXX9_IRQ_BASE + TX4939_IR_INT(0))
|
||||
/* Onboard 10M Ether */
|
||||
#define RBTX4939_IRQ_ETHER (TXX9_IRQ_BASE + TX4939_IR_INT(1))
|
||||
|
||||
void rbtx4939_prom_init(void);
|
||||
void rbtx4939_irq_setup(void);
|
||||
|
||||
struct mtd_partition;
|
||||
struct map_info;
|
||||
struct rbtx4939_flash_data {
|
||||
unsigned int width;
|
||||
unsigned int nr_parts;
|
||||
struct mtd_partition *parts;
|
||||
void (*map_init)(struct map_info *map);
|
||||
};
|
||||
|
||||
#endif /* __ASM_TXX9_RBTX4939_H */
|
||||
@@ -39,15 +39,6 @@ config TOSHIBA_RBTX4927
|
||||
This Toshiba board is based on the TX4927 processor. Say Y here to
|
||||
support this machine type
|
||||
|
||||
config TOSHIBA_RBTX4939
|
||||
bool "Toshiba RBTX4939 board"
|
||||
depends on MACH_TX49XX
|
||||
select SOC_TX4939
|
||||
select TXX9_7SEGLED
|
||||
help
|
||||
This Toshiba board is based on the TX4939 processor. Say Y here to
|
||||
support this machine type
|
||||
|
||||
config SOC_TX3927
|
||||
bool
|
||||
select CEVT_TXX9
|
||||
@@ -81,9 +72,6 @@ config SOC_TX4939
|
||||
select HAVE_PCI
|
||||
select PCI_TX4927
|
||||
|
||||
config TXX9_7SEGLED
|
||||
bool
|
||||
|
||||
config TOSHIBA_FPCIB0
|
||||
bool "FPCIB0 Backplane Support"
|
||||
depends on PCI && MACH_TXX9
|
||||
|
||||
@@ -14,4 +14,3 @@ obj-$(CONFIG_TOSHIBA_JMR3927) += jmr3927/
|
||||
# Toshiba RBTX49XX boards
|
||||
#
|
||||
obj-$(CONFIG_TOSHIBA_RBTX4927) += rbtx4927/
|
||||
obj-$(CONFIG_TOSHIBA_RBTX4939) += rbtx4939/
|
||||
|
||||
@@ -1,123 +0,0 @@
|
||||
/*
|
||||
* 7 Segment LED routines
|
||||
* Based on RBTX49xx patch from CELF patch archive.
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*
|
||||
* (C) Copyright TOSHIBA CORPORATION 2005-2007
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
#include <linux/device.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/map_to_7segment.h>
|
||||
#include <asm/txx9/generic.h>
|
||||
|
||||
static unsigned int tx_7segled_num;
|
||||
static void (*tx_7segled_putc)(unsigned int pos, unsigned char val);
|
||||
|
||||
void __init txx9_7segled_init(unsigned int num,
|
||||
void (*putc)(unsigned int pos, unsigned char val))
|
||||
{
|
||||
tx_7segled_num = num;
|
||||
tx_7segled_putc = putc;
|
||||
}
|
||||
|
||||
static SEG7_CONVERSION_MAP(txx9_seg7map, MAP_ASCII7SEG_ALPHANUM_LC);
|
||||
|
||||
int txx9_7segled_putc(unsigned int pos, char c)
|
||||
{
|
||||
if (pos >= tx_7segled_num)
|
||||
return -EINVAL;
|
||||
c = map_to_seg7(&txx9_seg7map, c);
|
||||
if (c < 0)
|
||||
return c;
|
||||
tx_7segled_putc(pos, c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t ascii_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t size)
|
||||
{
|
||||
unsigned int ch = dev->id;
|
||||
txx9_7segled_putc(ch, buf[0]);
|
||||
return size;
|
||||
}
|
||||
|
||||
static ssize_t raw_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t size)
|
||||
{
|
||||
unsigned int ch = dev->id;
|
||||
tx_7segled_putc(ch, buf[0]);
|
||||
return size;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_WO(ascii);
|
||||
static DEVICE_ATTR_WO(raw);
|
||||
|
||||
static ssize_t map_seg7_show(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
memcpy(buf, &txx9_seg7map, sizeof(txx9_seg7map));
|
||||
return sizeof(txx9_seg7map);
|
||||
}
|
||||
|
||||
static ssize_t map_seg7_store(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t size)
|
||||
{
|
||||
if (size != sizeof(txx9_seg7map))
|
||||
return -EINVAL;
|
||||
memcpy(&txx9_seg7map, buf, size);
|
||||
return size;
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(map_seg7, 0600, map_seg7_show, map_seg7_store);
|
||||
|
||||
static struct bus_type tx_7segled_subsys = {
|
||||
.name = "7segled",
|
||||
.dev_name = "7segled",
|
||||
};
|
||||
|
||||
static void tx_7segled_release(struct device *dev)
|
||||
{
|
||||
kfree(dev);
|
||||
}
|
||||
|
||||
static int __init tx_7segled_init_sysfs(void)
|
||||
{
|
||||
int error, i;
|
||||
if (!tx_7segled_num)
|
||||
return -ENODEV;
|
||||
error = subsys_system_register(&tx_7segled_subsys, NULL);
|
||||
if (error)
|
||||
return error;
|
||||
error = device_create_file(tx_7segled_subsys.dev_root, &dev_attr_map_seg7);
|
||||
if (error)
|
||||
return error;
|
||||
for (i = 0; i < tx_7segled_num; i++) {
|
||||
struct device *dev;
|
||||
dev = kzalloc(sizeof(*dev), GFP_KERNEL);
|
||||
if (!dev) {
|
||||
error = -ENODEV;
|
||||
break;
|
||||
}
|
||||
dev->id = i;
|
||||
dev->bus = &tx_7segled_subsys;
|
||||
dev->release = &tx_7segled_release;
|
||||
error = device_register(dev);
|
||||
if (error) {
|
||||
put_device(dev);
|
||||
return error;
|
||||
}
|
||||
device_create_file(dev, &dev_attr_ascii);
|
||||
device_create_file(dev, &dev_attr_raw);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
device_initcall(tx_7segled_init_sysfs);
|
||||
@@ -10,4 +10,3 @@ obj-$(CONFIG_SOC_TX4927) += mem_tx4927.o setup_tx4927.o irq_tx4927.o
|
||||
obj-$(CONFIG_SOC_TX4938) += mem_tx4927.o setup_tx4938.o irq_tx4938.o
|
||||
obj-$(CONFIG_SOC_TX4939) += setup_tx4939.o irq_tx4939.o
|
||||
obj-$(CONFIG_TOSHIBA_FPCIB0) += smsc_fdc37m81x.o
|
||||
obj-$(CONFIG_TXX9_7SEGLED) += 7segled.o
|
||||
|
||||
@@ -314,11 +314,6 @@ static void __init select_board(void)
|
||||
case 0x4937:
|
||||
txx9_board_vec = &rbtx4937_vec;
|
||||
break;
|
||||
#endif
|
||||
#ifdef CONFIG_TOSHIBA_RBTX4939
|
||||
case 0x4939:
|
||||
txx9_board_vec = &rbtx4939_vec;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
@@ -585,21 +580,6 @@ unsigned long (*__swizzle_addr_b)(unsigned long port) = __swizzle_addr_none;
|
||||
EXPORT_SYMBOL(__swizzle_addr_b);
|
||||
#endif
|
||||
|
||||
#ifdef NEEDS_TXX9_IOSWABW
|
||||
static u16 ioswabw_default(volatile u16 *a, u16 x)
|
||||
{
|
||||
return le16_to_cpu(x);
|
||||
}
|
||||
static u16 __mem_ioswabw_default(volatile u16 *a, u16 x)
|
||||
{
|
||||
return x;
|
||||
}
|
||||
u16 (*ioswabw)(volatile u16 *a, u16 x) = ioswabw_default;
|
||||
EXPORT_SYMBOL(ioswabw);
|
||||
u16 (*__mem_ioswabw)(volatile u16 *a, u16 x) = __mem_ioswabw_default;
|
||||
EXPORT_SYMBOL(__mem_ioswabw);
|
||||
#endif
|
||||
|
||||
void __init txx9_physmap_flash_init(int no, unsigned long addr,
|
||||
unsigned long size,
|
||||
const struct physmap_flash_data *pdata)
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += irq.o setup.o prom.o
|
||||
@@ -1,95 +0,0 @@
|
||||
/*
|
||||
* Toshiba RBTX4939 interrupt routines
|
||||
* Based on linux/arch/mips/txx9/rbtx4938/irq.c,
|
||||
* and RBTX49xx patch from CELF patch archive.
|
||||
*
|
||||
* Copyright (C) 2000-2001,2005-2006 Toshiba Corporation
|
||||
* 2003-2005 (c) MontaVista Software, Inc. This file is licensed under the
|
||||
* terms of the GNU General Public License version 2. This program is
|
||||
* licensed "as is" without any warranty of any kind, whether express
|
||||
* or implied.
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/mipsregs.h>
|
||||
#include <asm/txx9/rbtx4939.h>
|
||||
|
||||
/*
|
||||
* RBTX4939 IOC controller definition
|
||||
*/
|
||||
|
||||
static void rbtx4939_ioc_irq_unmask(struct irq_data *d)
|
||||
{
|
||||
int ioc_nr = d->irq - RBTX4939_IRQ_IOC;
|
||||
|
||||
writeb(readb(rbtx4939_ien_addr) | (1 << ioc_nr), rbtx4939_ien_addr);
|
||||
}
|
||||
|
||||
static void rbtx4939_ioc_irq_mask(struct irq_data *d)
|
||||
{
|
||||
int ioc_nr = d->irq - RBTX4939_IRQ_IOC;
|
||||
|
||||
writeb(readb(rbtx4939_ien_addr) & ~(1 << ioc_nr), rbtx4939_ien_addr);
|
||||
mmiowb();
|
||||
}
|
||||
|
||||
static struct irq_chip rbtx4939_ioc_irq_chip = {
|
||||
.name = "IOC",
|
||||
.irq_mask = rbtx4939_ioc_irq_mask,
|
||||
.irq_unmask = rbtx4939_ioc_irq_unmask,
|
||||
};
|
||||
|
||||
|
||||
static inline int rbtx4939_ioc_irqroute(void)
|
||||
{
|
||||
unsigned char istat = readb(rbtx4939_ifac2_addr);
|
||||
|
||||
if (unlikely(istat == 0))
|
||||
return -1;
|
||||
return RBTX4939_IRQ_IOC + __fls8(istat);
|
||||
}
|
||||
|
||||
static int rbtx4939_irq_dispatch(int pending)
|
||||
{
|
||||
int irq;
|
||||
|
||||
if (pending & CAUSEF_IP7)
|
||||
return MIPS_CPU_IRQ_BASE + 7;
|
||||
irq = tx4939_irq();
|
||||
if (likely(irq >= 0)) {
|
||||
/* redirect IOC interrupts */
|
||||
switch (irq) {
|
||||
case RBTX4939_IRQ_IOCINT:
|
||||
irq = rbtx4939_ioc_irqroute();
|
||||
break;
|
||||
}
|
||||
} else if (pending & CAUSEF_IP0)
|
||||
irq = MIPS_CPU_IRQ_BASE + 0;
|
||||
else if (pending & CAUSEF_IP1)
|
||||
irq = MIPS_CPU_IRQ_BASE + 1;
|
||||
else
|
||||
irq = -1;
|
||||
return irq;
|
||||
}
|
||||
|
||||
void __init rbtx4939_irq_setup(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* mask all IOC interrupts */
|
||||
writeb(0, rbtx4939_ien_addr);
|
||||
|
||||
/* clear SoftInt interrupts */
|
||||
writeb(0, rbtx4939_softint_addr);
|
||||
|
||||
txx9_irq_dispatch = rbtx4939_irq_dispatch;
|
||||
|
||||
tx4939_irq_init();
|
||||
for (i = RBTX4939_IRQ_IOC;
|
||||
i < RBTX4939_IRQ_IOC + RBTX4939_NR_IRQ_IOC; i++)
|
||||
irq_set_chip_and_handler(i, &rbtx4939_ioc_irq_chip,
|
||||
handle_level_irq);
|
||||
|
||||
irq_set_chained_handler(RBTX4939_IRQ_IOCINT, handle_simple_irq);
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
/*
|
||||
* rbtx4939 specific prom routines
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <asm/txx9/generic.h>
|
||||
#include <asm/txx9/rbtx4939.h>
|
||||
|
||||
void __init rbtx4939_prom_init(void)
|
||||
{
|
||||
unsigned long start, size;
|
||||
u64 win;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (!((__u32)____raw_readq(&tx4939_ddrcptr->winen) & (1 << i)))
|
||||
continue;
|
||||
win = ____raw_readq(&tx4939_ddrcptr->win[i]);
|
||||
start = (unsigned long)(win >> 48);
|
||||
size = (((unsigned long)(win >> 32) & 0xffff) + 1) - start;
|
||||
memblock_add(start << 20, size << 20);
|
||||
}
|
||||
txx9_sio_putchar_init(TX4939_SIO_REG(0) & 0xfffffffffULL);
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -357,12 +357,6 @@ config MTD_INTEL_VR_NOR
|
||||
Map driver for a NOR flash bank located on the Expansion Bus of the
|
||||
Intel Vermilion Range chipset.
|
||||
|
||||
config MTD_RBTX4939
|
||||
tristate "Map driver for RBTX4939 board"
|
||||
depends on TOSHIBA_RBTX4939 && MTD_CFI && MTD_COMPLEX_MAPPINGS
|
||||
help
|
||||
Map driver for NOR flash chips on RBTX4939 board.
|
||||
|
||||
config MTD_PLATRAM
|
||||
tristate "Map driver for platform device RAM (mtd-ram)"
|
||||
select MTD_RAM
|
||||
|
||||
@@ -42,6 +42,5 @@ obj-$(CONFIG_MTD_SCB2_FLASH) += scb2_flash.o
|
||||
obj-$(CONFIG_MTD_IXP4XX) += ixp4xx.o
|
||||
obj-$(CONFIG_MTD_PLATRAM) += plat-ram.o
|
||||
obj-$(CONFIG_MTD_INTEL_VR_NOR) += intel_vr_nor.o
|
||||
obj-$(CONFIG_MTD_RBTX4939) += rbtx4939-flash.o
|
||||
obj-$(CONFIG_MTD_VMU) += vmu-flash.o
|
||||
obj-$(CONFIG_MTD_LANTIQ) += lantiq-flash.o
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* rbtx4939-flash (based on physmap.c)
|
||||
*
|
||||
* This is a simplified physmap driver with map_init callback function.
|
||||
*
|
||||
* Copyright (C) 2009 Atsushi Nemoto <anemo@mba.ocn.ne.jp>
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <linux/mtd/map.h>
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <asm/txx9/rbtx4939.h>
|
||||
|
||||
struct rbtx4939_flash_info {
|
||||
struct mtd_info *mtd;
|
||||
struct map_info map;
|
||||
};
|
||||
|
||||
static int rbtx4939_flash_remove(struct platform_device *dev)
|
||||
{
|
||||
struct rbtx4939_flash_info *info;
|
||||
|
||||
info = platform_get_drvdata(dev);
|
||||
if (!info)
|
||||
return 0;
|
||||
|
||||
if (info->mtd) {
|
||||
mtd_device_unregister(info->mtd);
|
||||
map_destroy(info->mtd);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char * const rom_probe_types[] = {
|
||||
"cfi_probe", "jedec_probe", NULL };
|
||||
|
||||
static int rbtx4939_flash_probe(struct platform_device *dev)
|
||||
{
|
||||
struct rbtx4939_flash_data *pdata;
|
||||
struct rbtx4939_flash_info *info;
|
||||
struct resource *res;
|
||||
const char * const *probe_type;
|
||||
int err = 0;
|
||||
unsigned long size;
|
||||
|
||||
pdata = dev_get_platdata(&dev->dev);
|
||||
if (!pdata)
|
||||
return -ENODEV;
|
||||
|
||||
res = platform_get_resource(dev, IORESOURCE_MEM, 0);
|
||||
if (!res)
|
||||
return -ENODEV;
|
||||
info = devm_kzalloc(&dev->dev, sizeof(struct rbtx4939_flash_info),
|
||||
GFP_KERNEL);
|
||||
if (!info)
|
||||
return -ENOMEM;
|
||||
|
||||
platform_set_drvdata(dev, info);
|
||||
|
||||
size = resource_size(res);
|
||||
pr_notice("rbtx4939 platform flash device: %pR\n", res);
|
||||
|
||||
if (!devm_request_mem_region(&dev->dev, res->start, size,
|
||||
dev_name(&dev->dev)))
|
||||
return -EBUSY;
|
||||
|
||||
info->map.name = dev_name(&dev->dev);
|
||||
info->map.phys = res->start;
|
||||
info->map.size = size;
|
||||
info->map.bankwidth = pdata->width;
|
||||
|
||||
info->map.virt = devm_ioremap(&dev->dev, info->map.phys, size);
|
||||
if (!info->map.virt)
|
||||
return -EBUSY;
|
||||
|
||||
if (pdata->map_init)
|
||||
(*pdata->map_init)(&info->map);
|
||||
else
|
||||
simple_map_init(&info->map);
|
||||
|
||||
probe_type = rom_probe_types;
|
||||
for (; !info->mtd && *probe_type; probe_type++)
|
||||
info->mtd = do_map_probe(*probe_type, &info->map);
|
||||
if (!info->mtd) {
|
||||
dev_err(&dev->dev, "map_probe failed\n");
|
||||
err = -ENXIO;
|
||||
goto err_out;
|
||||
}
|
||||
info->mtd->dev.parent = &dev->dev;
|
||||
err = mtd_device_register(info->mtd, pdata->parts, pdata->nr_parts);
|
||||
|
||||
if (err)
|
||||
goto err_out;
|
||||
return 0;
|
||||
|
||||
err_out:
|
||||
rbtx4939_flash_remove(dev);
|
||||
return err;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static void rbtx4939_flash_shutdown(struct platform_device *dev)
|
||||
{
|
||||
struct rbtx4939_flash_info *info = platform_get_drvdata(dev);
|
||||
|
||||
if (mtd_suspend(info->mtd) == 0)
|
||||
mtd_resume(info->mtd);
|
||||
}
|
||||
#else
|
||||
#define rbtx4939_flash_shutdown NULL
|
||||
#endif
|
||||
|
||||
static struct platform_driver rbtx4939_flash_driver = {
|
||||
.probe = rbtx4939_flash_probe,
|
||||
.remove = rbtx4939_flash_remove,
|
||||
.shutdown = rbtx4939_flash_shutdown,
|
||||
.driver = {
|
||||
.name = "rbtx4939-flash",
|
||||
},
|
||||
};
|
||||
|
||||
module_platform_driver(rbtx4939_flash_driver);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION("RBTX4939 MTD map driver");
|
||||
MODULE_ALIAS("platform:rbtx4939-flash");
|
||||
Reference in New Issue
Block a user