Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c86c5a91 authored by Nobuhiro Iwamatsu's avatar Nobuhiro Iwamatsu Committed by Paul Mundt
Browse files

sh: L-BOX RE2 support.

This adds support for the L-BOX RE2 router.

	http://www.nttcom.co.jp/l-box/



L-BOX RE2 is a SH7751R-based router. It has CF, Cardbus, serial,
and LAN x2. This is one of the very few SH boards that a general
person can obtain now.

The L-BOX shipped with a 2.4.28 kernel, this is a rewritten patch
adding it to current git.

Signed-off-by: default avatarNobuhiro Iwamatsu <iwamatsu@nigauri.org>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 00e8c494
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -244,6 +244,12 @@ config SH_7619_SOLUTION_ENGINE
	  Select 7619 SolutionEngine if configuring for a Hitachi SH7619
	  evaluation board.
	
config SH_LBOX_RE2
	bool "L-BOX RE2"
	select CPU_SUBTYPE_SH7751R
	help
	  Select L-BOX RE2 if configuring for the NTT COMWARE L-BOX RE2.

config SH_UNKNOWN
	bool "BareCPU"
	help
+1 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ machdir-$(CONFIG_SH_TITAN) := titan
machdir-$(CONFIG_SH_SHMIN)			:= shmin
machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE)	:= se/7206
machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE)	:= se/7619
machdir-$(CONFIG_SH_LBOX_RE2)			:= lboxre2
machdir-$(CONFIG_SH_UNKNOWN)			:= unknown

incdir-y			:= $(notdir $(machdir-y))
+5 −0
Original line number Diff line number Diff line
#
# Makefile for the L-BOX RE2 specific parts of the kernel
# Copyright (c) 2007 Nobuhiro Iwamatsu

obj-y	 := setup.o irq.o
+31 −0
Original line number Diff line number Diff line
/*
 * linux/arch/sh/boards/lboxre2/irq.c
 *
 * Copyright (C) 2007 Nobuhiro Iwamatsu
 *
 * NTT COMWARE L-BOX RE2 Support.
 *
 * 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/interrupt.h>
#include <linux/irq.h>
#include <asm/irq.h>
#include <asm/io.h>
#include <asm/lboxre2.h>

/*
 * Initialize IRQ setting
 */
void __init init_lboxre2_IRQ(void)
{
	make_imask_irq(IRQ_CF1);
	make_imask_irq(IRQ_CF0);
	make_imask_irq(IRQ_INTD);
	make_imask_irq(IRQ_ETH1);
	make_imask_irq(IRQ_ETH0);
	make_imask_irq(IRQ_INTA);
}
+84 −0
Original line number Diff line number Diff line
/*
 * linux/arch/sh/boards/lbox/setup.c
 *
 * Copyright (C) 2007 Nobuhiro Iwamatsu
 *
 * NTT COMWARE L-BOX RE2 Support
 *
 * 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/platform_device.h>
#include <linux/pata_platform.h>
#include <asm/machvec.h>
#include <asm/lboxre2.h>
#include <asm/io.h>

static struct resource cf_ide_resources[] = {
	[0] = {
		.start  = 0x1f0,
		.end    = 0x1f0 + 8 ,
		.flags  = IORESOURCE_IO,
	},
	[1] = {
		.start  = 0x1f0 + 0x206,
		.end    = 0x1f0 +8 + 0x206 + 8,
		.flags  = IORESOURCE_IO,
	},
	[2] = {
		.start  = IRQ_CF0,
		.flags  = IORESOURCE_IRQ,
	},
};

static struct platform_device cf_ide_device  = {
	.name           = "pata_platform",
	.id             = -1,
	.num_resources  = ARRAY_SIZE(cf_ide_resources),
	.resource       = cf_ide_resources,
};

static struct platform_device *lboxre2_devices[] __initdata = {
       &cf_ide_device,
};

static int __init lboxre2_devices_setup(void)
{
	u32 cf0_io_base;	/* Boot CF base address */
	pgprot_t prot;
	unsigned long paddrbase, psize;

	/* open I/O area window */
	paddrbase = virt_to_phys((void*)CONFIG_CF0_BASE_ADDR);
	psize = PAGE_SIZE;
	prot = PAGE_KERNEL_PCC( 1 , _PAGE_PCC_IO16);
	cf0_io_base = (u32)p3_ioremap(paddrbase, psize, prot.pgprot);
	if (!cf0_io_base) {
		printk(KERN_ERR "%s : can't open CF I/O window!\n" , __func__ );
		return -ENOMEM;
	}

	cf_ide_resources[0].start += cf0_io_base ;
	cf_ide_resources[0].end   += cf0_io_base ;
	cf_ide_resources[1].start += cf0_io_base ;
	cf_ide_resources[1].end   += cf0_io_base ;

	return platform_add_devices(lboxre2_devices,
			ARRAY_SIZE(lboxre2_devices));

}
device_initcall(lboxre2_devices_setup);

/*
 * The Machine Vector
 */
struct sh_machine_vector mv_lboxre2 __initmv = {
	.mv_name		= "L-BOX RE2",
	.mv_nr_irqs		= 72,
	.mv_init_irq		= init_lboxre2_IRQ,
};
ALIAS_MV(lboxre2)
Loading