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

Commit e8fb67f8 authored by Paul Mundt's avatar Paul Mundt
Browse files

sh: HS7751RVoIP board updates.



Various cleanups for HS7751RVoIP. Mostly just getting
rid of the old mach.c and splitting codec configuration
in to its own Kconfig.

Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 7e27b9b7
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -400,7 +400,7 @@ config SH_TMU

endmenu

#source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"
source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"

#source "arch/sh/boards/renesas/rts7751r2d/Kconfig"

+12 −0
Original line number Diff line number Diff line
if SH_HS7751RVOIP

menu "HS7751RVoIP options"

config HS7751RVOIP_CODEC
	bool "Support VoIP Codec section"
	help
	  Selecting this option will support CODEC section.

endmenu

endif
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@
# Makefile for the HS7751RVoIP specific parts of the kernel
#

obj-y	 := mach.o setup.o io.o irq.o led.o
obj-y	 := setup.o io.o irq.o led.o

obj-$(CONFIG_PCI) += pci.o
+0 −54
Original line number Diff line number Diff line
/*
 * linux/arch/sh/kernel/mach_hs7751rvoip.c
 *
 * Minor tweak of mach_se.c file to reference hs7751rvoip-specific items.
 *
 * May be copied or modified under the terms of the GNU General Public
 * License.  See linux/COPYING for more information.
 *
 * Machine vector for the Renesas Technology sales HS7751RVoIP
 */

#include <linux/init.h>

#include <asm/machvec.h>
#include <asm/rtc.h>
#include <asm/irq.h>
#include <asm/hs7751rvoip/io.h>

extern void init_hs7751rvoip_IRQ(void);
extern void *hs7751rvoip_ioremap(unsigned long, unsigned long);

/*
 * The Machine Vector
 */

struct sh_machine_vector mv_hs7751rvoip __initmv = {
	.mv_nr_irqs		= 72,

	.mv_inb			= hs7751rvoip_inb,
	.mv_inw			= hs7751rvoip_inw,
	.mv_inl			= hs7751rvoip_inl,
	.mv_outb		= hs7751rvoip_outb,
	.mv_outw		= hs7751rvoip_outw,
	.mv_outl		= hs7751rvoip_outl,

	.mv_inb_p		= hs7751rvoip_inb_p,
	.mv_inw_p		= hs7751rvoip_inw,
	.mv_inl_p		= hs7751rvoip_inl,
	.mv_outb_p		= hs7751rvoip_outb_p,
	.mv_outw_p		= hs7751rvoip_outw,
	.mv_outl_p		= hs7751rvoip_outl,

	.mv_insb		= hs7751rvoip_insb,
	.mv_insw		= hs7751rvoip_insw,
	.mv_insl		= hs7751rvoip_insl,
	.mv_outsb		= hs7751rvoip_outsb,
	.mv_outsw		= hs7751rvoip_outsw,
	.mv_outsl		= hs7751rvoip_outsl,

	.mv_ioremap		= hs7751rvoip_ioremap,
	.mv_isa_port2addr	= hs7751rvoip_isa_port2addr,
	.mv_init_irq		= init_hs7751rvoip_IRQ,
};
ALIAS_MV(hs7751rvoip)
+51 −12
Original line number Diff line number Diff line
@@ -17,14 +17,55 @@
#include <linux/hdreg.h>
#include <linux/ide.h>
#include <linux/pm.h>
#include <asm/io.h>
#include <asm/hs7751rvoip/hs7751rvoip.h>

/* defined in mm/ioremap.c */
extern void * p3_ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags);
#include <asm/hs7751rvoip/io.h>
#include <asm/io.h>
#include <asm/machvec.h>
#include <asm/rtc.h>
#include <asm/irq.h>

unsigned int debug_counter;

static void __init hs7751rvoip_init_irq(void)
{
#if defined(CONFIG_HS7751RVOIP_CODEC)
	make_ipr_irq(DMTE0_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
	make_ipr_irq(DMTE1_IRQ, DMA_IPR_ADDR, DMA_IPR_POS, DMA_PRIORITY);
#endif

	init_hs7751rvoip_IRQ();
}

struct sh_machine_vector mv_hs7751rvoip __initmv = {
	.mv_nr_irqs		= 72,

	.mv_inb			= hs7751rvoip_inb,
	.mv_inw			= hs7751rvoip_inw,
	.mv_inl			= hs7751rvoip_inl,
	.mv_outb		= hs7751rvoip_outb,
	.mv_outw		= hs7751rvoip_outw,
	.mv_outl		= hs7751rvoip_outl,

	.mv_inb_p		= hs7751rvoip_inb_p,
	.mv_inw_p		= hs7751rvoip_inw,
	.mv_inl_p		= hs7751rvoip_inl,
	.mv_outb_p		= hs7751rvoip_outb_p,
	.mv_outw_p		= hs7751rvoip_outw,
	.mv_outl_p		= hs7751rvoip_outl,

	.mv_insb		= hs7751rvoip_insb,
	.mv_insw		= hs7751rvoip_insw,
	.mv_insl		= hs7751rvoip_insl,
	.mv_outsb		= hs7751rvoip_outsb,
	.mv_outsw		= hs7751rvoip_outsw,
	.mv_outsl		= hs7751rvoip_outsl,

	.mv_ioremap		= hs7751rvoip_ioremap,
	.mv_isa_port2addr	= hs7751rvoip_isa_port2addr,
	.mv_init_irq		= hs7751rvoip_init_irq,
};
ALIAS_MV(hs7751rvoip)

const char *get_system_type(void)
{
	return "HS7751RVoIP";
@@ -51,16 +92,15 @@ void *area6_io8_base;
void *area5_io16_base;
void *area6_io16_base;

int __init cf_init(void)
static int __init hs7751rvoip_cf_init(void)
{
	pgprot_t prot;
	unsigned long paddrbase, psize;
	unsigned long paddrbase;

	/* open I/O area window */
	paddrbase = virt_to_phys((void *)(PA_AREA5_IO+0x00000800));
	psize = PAGE_SIZE;
	prot = PAGE_KERNEL_PCC(1, _PAGE_PCC_COM16);
	area5_io16_base = p3_ioremap(paddrbase, psize, prot.pgprot);
	area5_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
	if (!area5_io16_base) {
		printk("allocate_cf_area : can't open CF I/O window!\n");
		return -ENOMEM;
@@ -69,19 +109,18 @@ int __init cf_init(void)
	/* XXX : do we need attribute and common-memory area also? */

	paddrbase = virt_to_phys((void *)PA_AREA6_IO);
	psize = PAGE_SIZE;
#if defined(CONFIG_HS7751RVOIP_CODEC)
	prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_COM8);
#else
	prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO8);
#endif
	area6_io8_base = p3_ioremap(paddrbase, psize, prot.pgprot);
	area6_io8_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
	if (!area6_io8_base) {
		printk("allocate_cf_area : can't open CODEC I/O 8bit window!\n");
		return -ENOMEM;
	}
	prot = PAGE_KERNEL_PCC(0, _PAGE_PCC_IO16);
	area6_io16_base = p3_ioremap(paddrbase, psize, prot.pgprot);
	area6_io16_base = p3_ioremap(paddrbase, PAGE_SIZE, prot.pgprot);
	if (!area6_io16_base) {
		printk("allocate_cf_area : can't open CODEC I/O 16bit window!\n");
		return -ENOMEM;
@@ -90,4 +129,4 @@ int __init cf_init(void)
	return 0;
}

__initcall (cf_init);
__initcall(hs7751rvoip_cf_init);
Loading