Commit 5792bf64 authored by Steven J. Hill's avatar Steven J. Hill Committed by Ralf Baechle

MIPS: APRP: Code formatting clean-ups.

Clean-up code according to the 'checkpatch.pl' script.
Signed-off-by: default avatarSteven J. Hill <Steven.Hill@imgtec.com>
Reviewed-by: default avatarQais Yousef <Qais.Yousef@imgtec.com>
Patchwork: http://patchwork.linux-mips.org/patch/6097/Reviewed-by: default avatarJohn Crispin <blogic@openwrt.org>
parent 1336113a
...@@ -1950,7 +1950,6 @@ config MIPS_VPE_LOADER_TOM ...@@ -1950,7 +1950,6 @@ config MIPS_VPE_LOADER_TOM
you to ensure the amount you put in the option and the space your you to ensure the amount you put in the option and the space your
program requires is less or equal to the amount physically present. program requires is less or equal to the amount physically present.
# this should possibly be in drivers/char, but it is rather cpu related. Hmmm
config MIPS_VPE_APSP_API config MIPS_VPE_APSP_API
bool "Enable support for AP/SP API (RTLX)" bool "Enable support for AP/SP API (RTLX)"
depends on MIPS_VPE_LOADER depends on MIPS_VPE_LOADER
......
/* /*
* Amon 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.
*
* Copyright (C) 2013 Imagination Technologies Ltd.
*
* Arbitrary Monitor Support (AMON)
*/ */
int amon_cpu_avail(int cpu);
int amon_cpu_avail(int); int amon_cpu_start(int cpu, unsigned long pc, unsigned long sp,
int amon_cpu_start(int, unsigned long, unsigned long, unsigned long gp, unsigned long a0);
unsigned long, unsigned long);
/* /*
* 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.
*
* Copyright (C) 2004, 2005 MIPS Technologies, Inc. All rights reserved. * Copyright (C) 2004, 2005 MIPS Technologies, Inc. All rights reserved.
* Copyright (C) 2013 Imagination Technologies Ltd. * Copyright (C) 2013 Imagination Technologies Ltd.
*/ */
#ifndef __ASM_RTLX_H_ #ifndef __ASM_RTLX_H_
#define __ASM_RTLX_H_ #define __ASM_RTLX_H_
......
/* /*
* 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.
*
* Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved. * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
* Copyright (C) 2013 Imagination Technologies Ltd. * Copyright (C) 2013 Imagination Technologies Ltd.
*
* 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.
*
*/ */
#ifndef _ASM_VPE_H #ifndef _ASM_VPE_H
#define _ASM_VPE_H #define _ASM_VPE_H
......
/* /*
* 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.
*
* Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved. * Copyright (C) 2005 MIPS Technologies, Inc. All rights reserved.
* Copyright (C) 2005, 06 Ralf Baechle (ralf@linux-mips.org) * Copyright (C) 2005, 06 Ralf Baechle (ralf@linux-mips.org)
* * Copyright (C) 2013 Imagination Technologies Ltd.
* 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/device.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/init.h>
#include <asm/uaccess.h>
#include <linux/list.h>
#include <linux/vmalloc.h>
#include <linux/elf.h>
#include <linux/seq_file.h>
#include <linux/syscalls.h> #include <linux/syscalls.h>
#include <linux/moduleloader.h> #include <linux/moduleloader.h>
#include <linux/interrupt.h> #include <linux/atomic.h>
#include <linux/poll.h>
#include <linux/sched.h>
#include <linux/wait.h>
#include <asm/mipsmtregs.h> #include <asm/mipsmtregs.h>
#include <asm/mips_mt.h> #include <asm/mips_mt.h>
#include <asm/cacheflush.h>
#include <linux/atomic.h>
#include <asm/cpu.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/vpe.h>
#include <asm/rtlx.h> #include <asm/rtlx.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/vpe.h>
static int sp_stopping; static int sp_stopping;
struct rtlx_info *rtlx; struct rtlx_info *rtlx;
...@@ -53,22 +30,22 @@ static void __used dump_rtlx(void) ...@@ -53,22 +30,22 @@ static void __used dump_rtlx(void)
{ {
int i; int i;
printk("id 0x%lx state %d\n", rtlx->id, rtlx->state); pr_info("id 0x%lx state %d\n", rtlx->id, rtlx->state);
for (i = 0; i < RTLX_CHANNELS; i++) { for (i = 0; i < RTLX_CHANNELS; i++) {
struct rtlx_channel *chan = &rtlx->channel[i]; struct rtlx_channel *chan = &rtlx->channel[i];
printk(" rt_state %d lx_state %d buffer_size %d\n", pr_info(" rt_state %d lx_state %d buffer_size %d\n",
chan->rt_state, chan->lx_state, chan->buffer_size); chan->rt_state, chan->lx_state, chan->buffer_size);
printk(" rt_read %d rt_write %d\n", pr_info(" rt_read %d rt_write %d\n",
chan->rt_read, chan->rt_write); chan->rt_read, chan->rt_write);
printk(" lx_read %d lx_write %d\n", pr_info(" lx_read %d lx_write %d\n",
chan->lx_read, chan->lx_write); chan->lx_read, chan->lx_write);
printk(" rt_buffer <%s>\n", chan->rt_buffer); pr_info(" rt_buffer <%s>\n", chan->rt_buffer);
printk(" lx_buffer <%s>\n", chan->lx_buffer); pr_info(" lx_buffer <%s>\n", chan->lx_buffer);
} }
} }
...@@ -76,8 +53,7 @@ static void __used dump_rtlx(void) ...@@ -76,8 +53,7 @@ static void __used dump_rtlx(void)
static int rtlx_init(struct rtlx_info *rtlxi) static int rtlx_init(struct rtlx_info *rtlxi)
{ {
if (rtlxi->id != RTLX_ID) { if (rtlxi->id != RTLX_ID) {
printk(KERN_ERR "no valid RTLX id at 0x%p 0x%lx\n", pr_err("no valid RTLX id at 0x%p 0x%lx\n", rtlxi, rtlxi->id);
rtlxi, rtlxi->id);
return -ENOEXEC; return -ENOEXEC;
} }
...@@ -93,7 +69,7 @@ void rtlx_starting(int vpe) ...@@ -93,7 +69,7 @@ void rtlx_starting(int vpe)
sp_stopping = 0; sp_stopping = 0;
/* force a reload of rtlx */ /* force a reload of rtlx */
rtlx=NULL; rtlx = NULL;
/* wake up any sleeping rtlx_open's */ /* wake up any sleeping rtlx_open's */
for (i = 0; i < RTLX_CHANNELS; i++) for (i = 0; i < RTLX_CHANNELS; i++)
...@@ -118,31 +94,30 @@ int rtlx_open(int index, int can_sleep) ...@@ -118,31 +94,30 @@ int rtlx_open(int index, int can_sleep)
int ret = 0; int ret = 0;
if (index >= RTLX_CHANNELS) { if (index >= RTLX_CHANNELS) {
printk(KERN_DEBUG "rtlx_open index out of range\n"); pr_debug(KERN_DEBUG "rtlx_open index out of range\n");
return -ENOSYS; return -ENOSYS;
} }
if (atomic_inc_return(&channel_wqs[index].in_open) > 1) { if (atomic_inc_return(&channel_wqs[index].in_open) > 1) {
printk(KERN_DEBUG "rtlx_open channel %d already opened\n", pr_debug(KERN_DEBUG "rtlx_open channel %d already opened\n", index);
index);
ret = -EBUSY; ret = -EBUSY;
goto out_fail; goto out_fail;
} }
if (rtlx == NULL) { if (rtlx == NULL) {
if( (p = vpe_get_shared(tclimit)) == NULL) { p = vpe_get_shared(aprp_cpu_index());
if (can_sleep) { if (p == NULL) {
ret = __wait_event_interruptible( if (can_sleep) {
ret = __wait_event_interruptible(
channel_wqs[index].lx_queue, channel_wqs[index].lx_queue,
(p = vpe_get_shared(tclimit))); (p = vpe_get_shared(aprp_cpu_index())));
if (ret) if (ret)
goto out_fail;
} else {
pr_debug("No SP program loaded, and device opened with O_NONBLOCK\n");
ret = -ENOSYS;
goto out_fail; goto out_fail;
} else { }
printk(KERN_DEBUG "No SP program loaded, and device "
"opened with O_NONBLOCK\n");
ret = -ENOSYS;
goto out_fail;
}
} }
smp_rmb(); smp_rmb();
...@@ -164,24 +139,24 @@ int rtlx_open(int index, int can_sleep) ...@@ -164,24 +139,24 @@ int rtlx_open(int index, int can_sleep)
ret = -ERESTARTSYS; ret = -ERESTARTSYS;
goto out_fail; goto out_fail;
} }
finish_wait(&channel_wqs[index].lx_queue, &wait); finish_wait(&channel_wqs[index].lx_queue,
&wait);
} else { } else {
pr_err(" *vpe_get_shared is NULL. " pr_err(" *vpe_get_shared is NULL. Has an SP program been loaded?\n");
"Has an SP program been loaded?\n");
ret = -ENOSYS; ret = -ENOSYS;
goto out_fail; goto out_fail;
} }
} }
if ((unsigned int)*p < KSEG0) { if ((unsigned int)*p < KSEG0) {
printk(KERN_WARNING "vpe_get_shared returned an " pr_warn("vpe_get_shared returned an invalid pointer maybe an error code %d\n",
"invalid pointer maybe an error code %d\n", (int)*p);
(int)*p);
ret = -ENOSYS; ret = -ENOSYS;
goto out_fail; goto out_fail;
} }
if ((ret = rtlx_init(*p)) < 0) ret = rtlx_init(*p);
if (ret < 0)
goto out_ret; goto out_ret;
} }
...@@ -312,7 +287,7 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count) ...@@ -312,7 +287,7 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count)
size_t fl; size_t fl;
if (rtlx == NULL) if (rtlx == NULL)
return(-ENOSYS); return -ENOSYS;
rt = &rtlx->channel[index]; rt = &rtlx->channel[index];
...@@ -321,8 +296,8 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count) ...@@ -321,8 +296,8 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count)
rt_read = rt->rt_read; rt_read = rt->rt_read;
/* total number of bytes to copy */ /* total number of bytes to copy */
count = min(count, (size_t)write_spacefree(rt_read, rt->rt_write, count = min_t(size_t, count, write_spacefree(rt_read, rt->rt_write,
rt->buffer_size)); rt->buffer_size));
/* first bit from write pointer to the end of the buffer, or count */ /* first bit from write pointer to the end of the buffer, or count */
fl = min(count, (size_t) rt->buffer_size - rt->rt_write); fl = min(count, (size_t) rt->buffer_size - rt->rt_write);
...@@ -332,9 +307,8 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count) ...@@ -332,9 +307,8 @@ ssize_t rtlx_write(int index, const void __user *buffer, size_t count)
goto out; goto out;
/* if there's any left copy to the beginning of the buffer */ /* if there's any left copy to the beginning of the buffer */
if (count - fl) { if (count - fl)
failed = copy_from_user(rt->rt_buffer, buffer + fl, count - fl); failed = copy_from_user(rt->rt_buffer, buffer + fl, count - fl);
}
out: out:
count -= failed; count -= failed;
...@@ -360,7 +334,7 @@ static int file_release(struct inode *inode, struct file *filp) ...@@ -360,7 +334,7 @@ static int file_release(struct inode *inode, struct file *filp)
return rtlx_release(iminor(inode)); return rtlx_release(iminor(inode));
} }
static unsigned int file_poll(struct file *file, poll_table * wait) static unsigned int file_poll(struct file *file, poll_table *wait)
{ {
int minor = iminor(file_inode(file)); int minor = iminor(file_inode(file));
unsigned int mask = 0; unsigned int mask = 0;
...@@ -382,21 +356,20 @@ static unsigned int file_poll(struct file *file, poll_table * wait) ...@@ -382,21 +356,20 @@ static unsigned int file_poll(struct file *file, poll_table * wait)
return mask; return mask;
} }
static ssize_t file_read(struct file *file, char __user * buffer, size_t count, static ssize_t file_read(struct file *file, char __user *buffer, size_t count,
loff_t * ppos) loff_t *ppos)
{ {
int minor = iminor(file_inode(file)); int minor = iminor(file_inode(file));
/* data available? */ /* data available? */
if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1)) { if (!rtlx_read_poll(minor, (file->f_flags & O_NONBLOCK) ? 0 : 1))
return 0; // -EAGAIN makes cat whinge return 0; /* -EAGAIN makes 'cat' whine */
}
return rtlx_read(minor, buffer, count); return rtlx_read(minor, buffer, count);
} }
static ssize_t file_write(struct file *file, const char __user * buffer, static ssize_t file_write(struct file *file, const char __user *buffer,
size_t count, loff_t * ppos) size_t count, loff_t *ppos)
{ {
int minor = iminor(file_inode(file)); int minor = iminor(file_inode(file));
...@@ -418,11 +391,11 @@ static ssize_t file_write(struct file *file, const char __user * buffer, ...@@ -418,11 +391,11 @@ static ssize_t file_write(struct file *file, const char __user * buffer,
const struct file_operations rtlx_fops = { const struct file_operations rtlx_fops = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.open = file_open, .open = file_open,
.release = file_release, .release = file_release,
.write = file_write, .write = file_write,
.read = file_read, .read = file_read,
.poll = file_poll, .poll = file_poll,
.llseek = noop_llseek, .llseek = noop_llseek,
}; };
......
...@@ -26,7 +26,7 @@ static int hw_tcs, hw_vpes; ...@@ -26,7 +26,7 @@ static int hw_tcs, hw_vpes;
int vpe_run(struct vpe *v) int vpe_run(struct vpe *v)
{ {
unsigned long flags, val, dmt_flag; unsigned long flags, val, dmt_flag;
struct vpe_notifications *n; struct vpe_notifications *notifier;
unsigned int vpeflags; unsigned int vpeflags;
struct tc *t; struct tc *t;
...@@ -139,8 +139,8 @@ int vpe_run(struct vpe *v) ...@@ -139,8 +139,8 @@ int vpe_run(struct vpe *v)
emt(dmt_flag); emt(dmt_flag);
local_irq_restore(flags); local_irq_restore(flags);
list_for_each_entry(n, &v->notify, list) list_for_each_entry(notifier, &v->notify, list)
n->start(VPE_MODULE_MINOR); notifier->start(VPE_MODULE_MINOR);
return 0; return 0;
} }
......
This diff is collapsed.
/* /*
* Copyright (C) 2007 MIPS Technologies, Inc. * This file is subject to the terms and conditions of the GNU General Public
* All rights reserved. * License. See the file "COPYING" in the main directory of this archive
* for more details.
* 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 * Copyright (C) 2007 MIPS Technologies, Inc. All rights reserved.
* with this program; if not, write to the Free Software Foundation, Inc., * Copyright (C) 2013 Imagination Technologies Ltd.
* 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
* *
* Arbitrary Monitor interface * Arbitrary Monitor Interface
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/addrspace.h> #include <asm/addrspace.h>
#include <asm/mips-boards/launch.h>
#include <asm/mipsmtregs.h> #include <asm/mipsmtregs.h>
#include <asm/mips-boards/launch.h>
#include <asm/vpe.h> #include <asm/vpe.h>
int amon_cpu_avail(int cpu) int amon_cpu_avail(int cpu)
......
/* /*
* 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.
*
* Carsten Langgaard, carstenl@mips.com * Carsten Langgaard, carstenl@mips.com
* Copyright (C) 2000, 2001, 2004 MIPS Technologies, Inc. * Copyright (C) 2000, 2001, 2004 MIPS Technologies, Inc.
* Copyright (C) 2001 Ralf Baechle * Copyright (C) 2001 Ralf Baechle
* Copyright (C) 2013 Imagination Technologies Ltd. * Copyright (C) 2013 Imagination Technologies Ltd.
* *
* 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.
*
* Routines for generic manipulation of the interrupts found on the MIPS * Routines for generic manipulation of the interrupts found on the MIPS
* Malta board. * Malta board. The interrupt controller is located in the South Bridge
* The interrupt controller is located in the South Bridge a PIIX4 device * a PIIX4 device with two internal 82C95 interrupt controllers.
* with two internal 82C95 interrupt controllers.
*/ */
#include <linux/init.h> #include <linux/init.h>
#include <linux/irq.h> #include <linux/irq.h>
...@@ -92,7 +82,7 @@ static inline int mips_pcibios_iack(void) ...@@ -92,7 +82,7 @@ static inline int mips_pcibios_iack(void)
BONITO_PCIMAP_CFG = 0; BONITO_PCIMAP_CFG = 0;
break; break;
default: default:
printk(KERN_WARNING "Unknown system controller.\n"); pr_emerg("Unknown system controller.\n");
return -1; return -1;
} }
return irq; return irq;
...@@ -156,11 +146,11 @@ static void corehi_irqdispatch(void) ...@@ -156,11 +146,11 @@ static void corehi_irqdispatch(void)
unsigned int intrcause, datalo, datahi; unsigned int intrcause, datalo, datahi;
struct pt_regs *regs = get_irq_regs(); struct pt_regs *regs = get_irq_regs();
printk(KERN_EMERG "CoreHI interrupt, shouldn't happen, we die here!\n"); pr_emerg("CoreHI interrupt, shouldn't happen, we die here!\n");
printk(KERN_EMERG "epc : %08lx\nStatus: %08lx\n" pr_emerg("epc : %08lx\nStatus: %08lx\n"
"Cause : %08lx\nbadVaddr : %08lx\n", "Cause : %08lx\nbadVaddr : %08lx\n",
regs->cp0_epc, regs->cp0_status, regs->cp0_epc, regs->cp0_status,
regs->cp0_cause, regs->cp0_badvaddr); regs->cp0_cause, regs->cp0_badvaddr);
/* Read all the registers and then print them as there is a /* Read all the registers and then print them as there is a
problem with interspersed printk's upsetting the Bonito controller. problem with interspersed printk's upsetting the Bonito controller.
...@@ -178,8 +168,8 @@ static void corehi_irqdispatch(void) ...@@ -178,8 +168,8 @@ static void corehi_irqdispatch(void)
intrcause = GT_READ(GT_INTRCAUSE_OFS); intrcause = GT_READ(GT_INTRCAUSE_OFS);
datalo = GT_READ(GT_CPUERR_ADDRLO_OFS); datalo = GT_READ(GT_CPUERR_ADDRLO_OFS);
datahi = GT_READ(GT_CPUERR_ADDRHI_OFS); datahi = GT_READ(GT_CPUERR_ADDRHI_OFS);
printk(KERN_EMERG "GT_INTRCAUSE = %08x\n", intrcause); pr_emerg("GT_INTRCAUSE = %08x\n", intrcause);
printk(KERN_EMERG "GT_CPUERR_ADDR = %02x%08x\n", pr_emerg("GT_CPUERR_ADDR = %02x%08x\n",
datahi, datalo); datahi, datalo);
break; break;
case MIPS_REVISION_SCON_BONITO: case MIPS_REVISION_SCON_BONITO:
...@@ -191,14 +181,14 @@ static void corehi_irqdispatch(void) ...@@ -191,14 +181,14 @@ static void corehi_irqdispatch(void)
intedge = BONITO_INTEDGE; intedge = BONITO_INTEDGE;
intsteer = BONITO_INTSTEER; intsteer = BONITO_INTSTEER;
pcicmd = BONITO_PCICMD; pcicmd = BONITO_PCICMD;
printk(KERN_EMERG "BONITO_INTISR = %08x\n", intisr); pr_emerg("BONITO_INTISR = %08x\n", intisr);
printk(KERN_EMERG "BONITO_INTEN = %08x\n", inten); pr_emerg("BONITO_INTEN = %08x\n", inten);
printk(KERN_EMERG "BONITO_INTPOL = %08x\n", intpol); pr_emerg("BONITO_INTPOL = %08x\n", intpol);
printk(KERN_EMERG "BONITO_INTEDGE = %08x\n", intedge); pr_emerg("BONITO_INTEDGE = %08x\n", intedge);
printk(KERN_EMERG "BONITO_INTSTEER = %08x\n", intsteer); pr_emerg("BONITO_INTSTEER = %08x\n", intsteer);
printk(KERN_EMERG "BONITO_PCICMD = %08x\n", pcicmd); pr_emerg("BONITO_PCICMD = %08x\n", pcicmd);
printk(KERN_EMERG "BONITO_PCIBADADDR = %08x\n", pcibadaddr); pr_emerg("BONITO_PCIBADADDR = %08x\n", pcibadaddr);
printk(KERN_EMERG "BONITO_PCIMSTAT = %08x\n", pcimstat); pr_emerg("BONITO_PCIMSTAT = %08x\n", pcimstat);
break; break;
} }
...@@ -377,13 +367,13 @@ static struct irqaction corehi_irqaction = { ...@@ -377,13 +367,13 @@ static struct irqaction corehi_irqaction = {
.flags = IRQF_NO_THREAD, .flags = IRQF_NO_THREAD,
}; };
static msc_irqmap_t __initdata msc_irqmap[] = { static msc_irqmap_t msc_irqmap[] __initdata = {
{MSC01C_INT_TMR, MSC01_IRQ_EDGE, 0}, {MSC01C_INT_TMR, MSC01_IRQ_EDGE, 0},
{MSC01C_INT_PCI, MSC01_IRQ_LEVEL, 0}, {MSC01C_INT_PCI, MSC01_IRQ_LEVEL, 0},
}; };
static int __initdata msc_nr_irqs = ARRAY_SIZE(msc_irqmap); static int msc_nr_irqs __initdata = ARRAY_SIZE(msc_irqmap);
static msc_irqmap_t __initdata msc_eicirqmap[] = { static msc_irqmap_t msc_eicirqmap[] __initdata = {
{MSC01E_INT_SW0, MSC01_IRQ_LEVEL, 0}, {MSC01E_INT_SW0, MSC01_IRQ_LEVEL, 0},
{MSC01E_INT_SW1, MSC01_IRQ_LEVEL, 0}, {MSC01E_INT_SW1, MSC01_IRQ_LEVEL, 0},
{MSC01E_INT_I8259A, MSC01_IRQ_LEVEL, 0}, {MSC01E_INT_I8259A, MSC01_IRQ_LEVEL, 0},
...@@ -396,7 +386,7 @@ static msc_irqmap_t __initdata msc_eicirqmap[] = { ...@@ -396,7 +386,7 @@ static msc_irqmap_t __initdata msc_eicirqmap[] = {
{MSC01E_INT_CPUCTR, MSC01_IRQ_LEVEL, 0} {MSC01E_INT_CPUCTR, MSC01_IRQ_LEVEL, 0}
}; };
static int __initdata msc_nr_eicirqs = ARRAY_SIZE(msc_eicirqmap); static int msc_nr_eicirqs __initdata = ARRAY_SIZE(msc_eicirqmap);
/* /*
* This GIC specific tabular array defines the association between External * This GIC specific tabular array defines the association between External
...@@ -443,9 +433,12 @@ int __init gcmp_probe(unsigned long addr, unsigned long size) ...@@ -443,9 +433,12 @@ int __init gcmp_probe(unsigned long addr, unsigned long size)
if (gcmp_present >= 0) if (gcmp_present >= 0)
return gcmp_present; return gcmp_present;
_gcmp_base = (unsigned long) ioremap_nocache(GCMP_BASE_ADDR, GCMP_ADDRSPACE_SZ); _gcmp_base = (unsigned long) ioremap_nocache(GCMP_BASE_ADDR,
_msc01_biu_base = (unsigned long) ioremap_nocache(MSC01_BIU_REG_BASE, MSC01_BIU_ADDRSPACE_SZ); GCMP_ADDRSPACE_SZ);
gcmp_present = (GCMPGCB(GCMPB) & GCMP_GCB_GCMPB_GCMPBASE_MSK) == GCMP_BASE_ADDR; _msc01_biu_base = (unsigned long) ioremap_nocache(MSC01_BIU_REG_BASE,
MSC01_BIU_ADDRSPACE_SZ);
gcmp_present = ((GCMPGCB(GCMPB) & GCMP_GCB_GCMPB_GCMPBASE_MSK) ==
GCMP_BASE_ADDR);
if (gcmp_present) if (gcmp_present)
pr_debug("GCMP present\n"); pr_debug("GCMP present\n");
...@@ -455,9 +448,8 @@ int __init gcmp_probe(unsigned long addr, unsigned long size) ...@@ -455,9 +448,8 @@ int __init gcmp_probe(unsigned long addr, unsigned long size)
/* Return the number of IOCU's present */ /* Return the number of IOCU's present */
int __init gcmp_niocu(void) int __init gcmp_niocu(void)
{ {
return gcmp_present ? return gcmp_present ? ((GCMPGCB(GC) & GCMP_GCB_GC_NUMIOCU_MSK) >>
(GCMPGCB(GC) & GCMP_GCB_GC_NUMIOCU_MSK) >> GCMP_GCB_GC_NUMIOCU_SHF : GCMP_GCB_GC_NUMIOCU_SHF) : 0;
0;
} }
/* Set GCMP region attributes */ /* Set GCMP region attributes */
...@@ -606,11 +598,14 @@ void __init arch_init_irq(void) ...@@ -606,11 +598,14 @@ void __init arch_init_irq(void)
set_vi_handler(MIPSCPU_INT_IPI1, malta_ipi_irqdispatch); set_vi_handler(MIPSCPU_INT_IPI1, malta_ipi_irqdispatch);
} }
/* Argh.. this really needs sorting out.. */ /* Argh.. this really needs sorting out.. */
printk("CPU%d: status register was %08x\n", smp_processor_id(), read_c0_status()); pr_info("CPU%d: status register was %08x\n",
smp_processor_id(), read_c0_status());
write_c0_status(read_c0_status() | STATUSF_IP3 | STATUSF_IP4); write_c0_status(read_c0_status() | STATUSF_IP3 | STATUSF_IP4);
printk("CPU%d: status register now %08x\n", smp_processor_id(), read_c0_status()); pr_info("CPU%d: status register now %08x\n",
smp_processor_id(), read_c0_status());
write_c0_status(0x1100dc00); write_c0_status(0x1100dc00);
printk("CPU%d: status register frc %08x\n", smp_processor_id(), read_c0_status()); pr_info("CPU%d: status register frc %08x\n",
smp_processor_id(), read_c0_status());
for (i = 0; i < nr_cpu_ids; i++) { for (i = 0; i < nr_cpu_ids; i++) {
arch_init_ipiirq(MIPS_GIC_IRQ_BASE + arch_init_ipiirq(MIPS_GIC_IRQ_BASE +
GIC_RESCHED_INT(i), &irq_resched); GIC_RESCHED_INT(i), &irq_resched);
...@@ -628,11 +623,15 @@ void __init arch_init_irq(void) ...@@ -628,11 +623,15 @@ void __init arch_init_irq(void)
cpu_ipi_call_irq = MSC01E_INT_SW1; cpu_ipi_call_irq = MSC01E_INT_SW1;
} else { } else {
if (cpu_has_vint) { if (cpu_has_vint) {
set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ, ipi_resched_dispatch); set_vi_handler (MIPS_CPU_IPI_RESCHED_IRQ,
set_vi_handler (MIPS_CPU_IPI_CALL_IRQ, ipi_call_dispatch); ipi_resched_dispatch);
set_vi_handler (MIPS_CPU_IPI_CALL_IRQ,
ipi_call_dispatch);
} }
cpu_ipi_resched_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_RESCHED_IRQ; cpu_ipi_resched_irq = MIPS_CPU_IRQ_BASE +
cpu_ipi_call_irq = MIPS_CPU_IRQ_BASE + MIPS_CPU_IPI_CALL_IRQ; MIPS_CPU_IPI_RESCHED_IRQ;
cpu_ipi_call_irq = MIPS_CPU_IRQ_BASE +
MIPS_CPU_IPI_CALL_IRQ;
} }
arch_init_ipiirq(cpu_ipi_resched_irq, &irq_resched); arch_init_ipiirq(cpu_ipi_resched_irq, &irq_resched);
arch_init_ipiirq(cpu_ipi_call_irq, &irq_call); arch_init_ipiirq(cpu_ipi_call_irq, &irq_call);
...@@ -642,9 +641,7 @@ void __init arch_init_irq(void) ...@@ -642,9 +641,7 @@ void __init arch_init_irq(void)
void malta_be_init(void) void malta_be_init(void)
{ {
if (gcmp_present) { /* Could change CM error mask register. */
/* Could change CM error mask register */
}
} }
...@@ -724,14 +721,14 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup) ...@@ -724,14 +721,14 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup)
if (cause < 16) { if (cause < 16) {
unsigned long cca_bits = (cm_error >> 15) & 7; unsigned long cca_bits = (cm_error >> 15) & 7;
unsigned long tr_bits = (cm_error >> 12) & 7; unsigned long tr_bits = (cm_error >> 12) & 7;
unsigned long mcmd_bits = (cm_error >> 7) & 0x1f; unsigned long cmd_bits = (cm_error >> 7) & 0x1f;
unsigned long stag_bits = (cm_error >> 3) & 15; unsigned long stag_bits = (cm_error >> 3) & 15;
unsigned long sport_bits = (cm_error >> 0) & 7; unsigned long sport_bits = (cm_error >> 0) & 7;
snprintf(buf, sizeof(buf), snprintf(buf, sizeof(buf),
"CCA=%lu TR=%s MCmd=%s STag=%lu " "CCA=%lu TR=%s MCmd=%s STag=%lu "
"SPort=%lu\n", "SPort=%lu\n",
cca_bits, tr[tr_bits], mcmd[mcmd_bits], cca_bits, tr[tr_bits], mcmd[cmd_bits],
stag_bits, sport_bits); stag_bits, sport_bits);
} else { } else {
/* glob state & sresp together */ /* glob state & sresp together */
...@@ -740,7 +737,7 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup) ...@@ -740,7 +737,7 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup)
unsigned long c1_bits = (cm_error >> 12) & 7; unsigned long c1_bits = (cm_error >> 12) & 7;
unsigned long c0_bits = (cm_error >> 9) & 7; unsigned long c0_bits = (cm_error >> 9) & 7;
unsigned long sc_bit = (cm_error >> 8) & 1; unsigned long sc_bit = (cm_error >> 8) & 1;
unsigned long mcmd_bits = (cm_error >> 3) & 0x1f; unsigned long cmd_bits = (cm_error >> 3) & 0x1f;
unsigned long sport_bits = (cm_error >> 0) & 7; unsigned long sport_bits = (cm_error >> 0) & 7;
snprintf(buf, sizeof(buf), snprintf(buf, sizeof(buf),
"C3=%s C2=%s C1=%s C0=%s SC=%s " "C3=%s C2=%s C1=%s C0=%s SC=%s "
...@@ -748,16 +745,16 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup) ...@@ -748,16 +745,16 @@ int malta_be_handler(struct pt_regs *regs, int is_fixup)
core[c3_bits], core[c2_bits], core[c3_bits], core[c2_bits],
core[c1_bits], core[c0_bits], core[c1_bits], core[c0_bits],
sc_bit ? "True" : "False", sc_bit ? "True" : "False",
mcmd[mcmd_bits], sport_bits); mcmd[cmd_bits], sport_bits);
} }
ocause = (cm_other & GCMP_GCB_GMEO_ERROR_2ND_MSK) >> ocause = (cm_other & GCMP_GCB_GMEO_ERROR_2ND_MSK) >>
GCMP_GCB_GMEO_ERROR_2ND_SHF; GCMP_GCB_GMEO_ERROR_2ND_SHF;
printk("CM_ERROR=%08lx %s <%s>\n", cm_error, pr_err("CM_ERROR=%08lx %s <%s>\n", cm_error,
causes[cause], buf); causes[cause], buf);
printk("CM_ADDR =%08lx\n", cm_addr); pr_err("CM_ADDR =%08lx\n", cm_addr);
printk("CM_OTHER=%08lx %s\n", cm_other, causes[ocause]); pr_err("CM_OTHER=%08lx %s\n", cm_other, causes[ocause]);
/* reprime cause register */ /* reprime cause register */
GCMPGCB(GCMEC) = 0; GCMPGCB(GCMEC) = 0;
......
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