Skip to content

Commit

Permalink
Philips PNX8550 support: MIPS32-like core with 2 Trimedias on it.
Browse files Browse the repository at this point in the history
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
  • Loading branch information
Pete Popov authored and Ralf Baechle committed Oct 29, 2005
1 parent e01402b commit bdf21b1
Show file tree
Hide file tree
Showing 38 changed files with 2,876 additions and 3 deletions.
21 changes: 21 additions & 0 deletions arch/mips/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,16 @@ config HYPERTRANSPORT
bool "Hypertransport Support for PMC-Sierra Yosemite"
depends on PMC_YOSEMITE

config PNX8550_V2PCI
bool "Support for Philips PNX8550 based Viper2-PCI board"
select PNX8550
select SYS_SUPPORTS_LITTLE_ENDIAN

config PNX8550_JBS
bool "Support for Philips PNX8550 based JBS board"
select PNX8550
select SYS_SUPPORTS_LITTLE_ENDIAN

config DDB5074
bool "Support for NEC DDB Vrc-5074 (EXPERIMENTAL)"
depends on EXPERIMENTAL
Expand Down Expand Up @@ -827,6 +837,7 @@ config TOSHIBA_FPCIB0

source "arch/mips/sgi-ip27/Kconfig"
source "arch/mips/sibyte/Kconfig"
source "arch/mips/philips/pnx8550/common/Kconfig"

config RWSEM_GENERIC_SPINLOCK
bool
Expand Down Expand Up @@ -954,6 +965,16 @@ config ITE_BOARD_GEN
depends on MIPS_IVR || MIPS_ITE8172
default y

config PNX8550
bool
select SOC_PNX8550

config SOC_PNX8550
bool
select SYS_SUPPORTS_32BIT_KERNEL
select DMA_NONCOHERENT
select HW_HAS_PCI

config SWAP_IO_SPACE
bool

Expand Down
14 changes: 14 additions & 0 deletions arch/mips/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ cflags-$(CONFIG_CPU_RM9000) += \
$(call set_gccflags,rm9000,mips4,r5000,mips4,mips2) \
-Wa,--trap


cflags-$(CONFIG_CPU_SB1) += \
$(call set_gccflags,sb1,mips64,r5000,mips4,mips2) \
-Wa,--trap
Expand Down Expand Up @@ -560,6 +561,19 @@ load-$(CONFIG_CASIO_E55) += 0xffffffff80004000
#
load-$(CONFIG_TANBAC_TB022X) += 0xffffffff80000000

#
# Common Philips PNX8550
#
core-$(CONFIG_SOC_PNX8550) += arch/mips/philips/pnx8550/common/
cflags-$(CONFIG_SOC_PNX8550) += -Iinclude/asm-mips/mach-pnx8550

#
# Philips PNX8550 JBS board
#
libs-$(CONFIG_PNX8550_JBS) += arch/mips/philips/pnx8550/jbs/
#cflags-$(CONFIG_PNX8550_JBS) += -Iinclude/asm-mips/mach-pnx8550
load-$(CONFIG_PNX8550_JBS) += 0xffffffff80060000

#
# SGI IP22 (Indy/Indigo2)
#
Expand Down
19 changes: 19 additions & 0 deletions arch/mips/kernel/cpu-probe.c
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ static inline void check_wait(void)
case CPU_24K:
case CPU_25KF:
case CPU_34K:
case CPU_PR4450:
cpu_wait = r4k_wait;
printk(" available.\n");
break;
Expand Down Expand Up @@ -624,6 +625,21 @@ static inline void cpu_probe_sandcraft(struct cpuinfo_mips *c)
}
}

static inline void cpu_probe_philips(struct cpuinfo_mips *c)
{
decode_configs(c);
switch (c->processor_id & 0xff00) {
case PRID_IMP_PR4450:
c->cputype = CPU_PR4450;
c->isa_level = MIPS_CPU_ISA_M32;
break;
default:
panic("Unknown Philips Core!"); /* REVISIT: die? */
break;
}
}


__init void cpu_probe(void)
{
struct cpuinfo_mips *c = &current_cpu_data;
Expand All @@ -649,6 +665,9 @@ __init void cpu_probe(void)
case PRID_COMP_SANDCRAFT:
cpu_probe_sandcraft(c);
break;
case PRID_COMP_PHILIPS:
cpu_probe_philips(c);
break;
default:
c->cputype = CPU_UNKNOWN;
}
Expand Down
3 changes: 2 additions & 1 deletion arch/mips/kernel/proc.c
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ static const char *cpu_name[] = {
[CPU_VR4133] = "NEC VR4133",
[CPU_VR4181] = "NEC VR4181",
[CPU_VR4181A] = "NEC VR4181A",
[CPU_SR71000] = "Sandcraft SR71000"
[CPU_SR71000] = "Sandcraft SR71000",
[CPU_PR4450] = "Philips PR4450",
};


Expand Down
3 changes: 3 additions & 0 deletions arch/mips/kernel/time.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/init.h>
Expand Down Expand Up @@ -112,8 +113,10 @@ static void c0_timer_ack(void)
{
unsigned int count;

#ifndef CONFIG_SOC_PNX8550 /* pnx8550 resets to zero */
/* Ack this timer interrupt and set the next one. */
expirelo += cycles_per_jiffy;
#endif
write_c0_compare(expirelo);

/* Check to see if we have missed any timer interrupts. */
Expand Down
1 change: 1 addition & 0 deletions arch/mips/mm/tlbex.c
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,7 @@ static __init void build_tlb_write_entry(u32 **p, struct label **l,
case CPU_AU1500:
case CPU_AU1550:
case CPU_AU1200:
case CPU_PR4450:
i_nop(p);
tlbw(p);
break;
Expand Down
1 change: 1 addition & 0 deletions arch/mips/pci/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ obj-$(CONFIG_MIPS_ITE8172) += fixup-ite8172g.o
obj-$(CONFIG_MIPS_IVR) += fixup-ivr.o
obj-$(CONFIG_SOC_AU1500) += fixup-au1000.o ops-au1000.o
obj-$(CONFIG_SOC_AU1550) += fixup-au1000.o ops-au1000.o
obj-$(CONFIG_SOC_PNX8550) += fixup-pnx8550.o ops-pnx8550.o
obj-$(CONFIG_MIPS_MALTA) += fixup-malta.o
obj-$(CONFIG_MOMENCO_JAGUAR_ATX)+= fixup-jaguar.o
obj-$(CONFIG_MOMENCO_OCELOT) += fixup-ocelot.o pci-ocelot.o
Expand Down
57 changes: 57 additions & 0 deletions arch/mips/pci/fixup-pnx8550.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* Philips PNX8550 pci fixups.
*
* Copyright 2005 Embedded Alley Solutions, Inc
* source@embeddealley.com
*
* This program is free software; you can distribute it and/or modify it
* under the terms of the GNU General Public License (Version 2) as
* published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
*/
#include <linux/types.h>
#include <linux/pci.h>
#include <linux/kernel.h>
#include <linux/init.h>

#include <asm/mach-pnx8550/pci.h>
#include <asm/mach-pnx8550/int.h>


#undef DEBUG
#ifdef DEBUG
#define DBG(x...) printk(x)
#else
#define DBG(x...)
#endif

extern char irq_tab_jbs[][5];

void __init pcibios_fixup_resources(struct pci_dev *dev)
{
/* no need to fixup IO resources */
}

void __init pcibios_fixup(void)
{
/* nothing to do here */
}

int __init pcibios_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
{
return irq_tab_jbs[slot][pin];
}

/* Do platform specific device initialization at pci_enable_device() time */
int pcibios_plat_dev_init(struct pci_dev *dev)
{
return 0;
}
Loading

0 comments on commit bdf21b1

Please sign in to comment.