[MIPS] Atlas, Malta, SEAD: Remove scroll from interrupt handler.
Aside of being handy for debugging this has never been a particularly good idea but is now getting in the way of dyntick / tickless kernels and general cleanups. Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -48,6 +48,8 @@ const char *get_system_type(void)
|
|||||||
return "MIPS Atlas";
|
return "MIPS Atlas";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char display_string[] = " LINUX ON ATLAS ";
|
||||||
|
|
||||||
void __init plat_mem_setup(void)
|
void __init plat_mem_setup(void)
|
||||||
{
|
{
|
||||||
mips_pcibios_init();
|
mips_pcibios_init();
|
||||||
|
@@ -19,9 +19,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <linux/timer.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
#include <asm/mips-boards/generic.h>
|
#include <asm/mips-boards/generic.h>
|
||||||
|
|
||||||
|
extern const char display_string[];
|
||||||
|
static unsigned int display_count;
|
||||||
|
static unsigned int max_display_count;
|
||||||
|
|
||||||
void mips_display_message(const char *str)
|
void mips_display_message(const char *str)
|
||||||
{
|
{
|
||||||
static unsigned int __iomem *display = NULL;
|
static unsigned int __iomem *display = NULL;
|
||||||
@@ -37,3 +42,22 @@ void mips_display_message(const char *str)
|
|||||||
writel(' ', display + i);
|
writel(' ', display + i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void scroll_display_message(unsigned long data);
|
||||||
|
static DEFINE_TIMER(mips_scroll_timer, scroll_display_message, HZ, 0);
|
||||||
|
|
||||||
|
static void scroll_display_message(unsigned long data)
|
||||||
|
{
|
||||||
|
mips_display_message(&display_string[display_count++]);
|
||||||
|
if (display_count == max_display_count)
|
||||||
|
display_count = 0;
|
||||||
|
|
||||||
|
mod_timer(&mips_scroll_timer, jiffies + HZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
void mips_scroll_message(void)
|
||||||
|
{
|
||||||
|
del_timer_sync(&mips_scroll_timer);
|
||||||
|
max_display_count = strlen(display_string) + 1 - 8;
|
||||||
|
mod_timer(&mips_scroll_timer, jiffies + 1);
|
||||||
|
}
|
||||||
|
@@ -53,37 +53,11 @@
|
|||||||
|
|
||||||
unsigned long cpu_khz;
|
unsigned long cpu_khz;
|
||||||
|
|
||||||
#if defined(CONFIG_MIPS_ATLAS)
|
|
||||||
static char display_string[] = " LINUX ON ATLAS ";
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_MIPS_MALTA)
|
|
||||||
#if defined(CONFIG_MIPS_MT_SMTC)
|
|
||||||
static char display_string[] = " SMTC LINUX ON MALTA ";
|
|
||||||
#else
|
|
||||||
static char display_string[] = " LINUX ON MALTA ";
|
|
||||||
#endif /* CONFIG_MIPS_MT_SMTC */
|
|
||||||
#endif
|
|
||||||
#if defined(CONFIG_MIPS_SEAD)
|
|
||||||
static char display_string[] = " LINUX ON SEAD ";
|
|
||||||
#endif
|
|
||||||
static unsigned int display_count;
|
|
||||||
#define MAX_DISPLAY_COUNT (sizeof(display_string) - 8)
|
|
||||||
|
|
||||||
#define CPUCTR_IMASKBIT (0x100 << MIPSCPU_INT_CPUCTR)
|
#define CPUCTR_IMASKBIT (0x100 << MIPSCPU_INT_CPUCTR)
|
||||||
|
|
||||||
static unsigned int timer_tick_count;
|
|
||||||
static int mips_cpu_timer_irq;
|
static int mips_cpu_timer_irq;
|
||||||
extern void smtc_timer_broadcast(int);
|
extern void smtc_timer_broadcast(int);
|
||||||
|
|
||||||
static inline void scroll_display_message(void)
|
|
||||||
{
|
|
||||||
if ((timer_tick_count++ % HZ) == 0) {
|
|
||||||
mips_display_message(&display_string[display_count++]);
|
|
||||||
if (display_count == MAX_DISPLAY_COUNT)
|
|
||||||
display_count = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void mips_timer_dispatch(void)
|
static void mips_timer_dispatch(void)
|
||||||
{
|
{
|
||||||
do_IRQ(mips_cpu_timer_irq);
|
do_IRQ(mips_cpu_timer_irq);
|
||||||
@@ -143,7 +117,6 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id)
|
|||||||
if (cpu_data[cpu].vpe_id == 0) {
|
if (cpu_data[cpu].vpe_id == 0) {
|
||||||
timer_interrupt(irq, NULL);
|
timer_interrupt(irq, NULL);
|
||||||
smtc_timer_broadcast(cpu_data[cpu].vpe_id);
|
smtc_timer_broadcast(cpu_data[cpu].vpe_id);
|
||||||
scroll_display_message();
|
|
||||||
} else {
|
} else {
|
||||||
write_c0_compare(read_c0_count() +
|
write_c0_compare(read_c0_count() +
|
||||||
(mips_hpt_frequency/HZ));
|
(mips_hpt_frequency/HZ));
|
||||||
@@ -167,8 +140,6 @@ irqreturn_t mips_timer_interrupt(int irq, void *dev_id)
|
|||||||
/* we keep interrupt disabled all the time */
|
/* we keep interrupt disabled all the time */
|
||||||
if (!r2 || (read_c0_cause() & (1 << 30)))
|
if (!r2 || (read_c0_cause() & (1 << 30)))
|
||||||
timer_interrupt(irq, NULL);
|
timer_interrupt(irq, NULL);
|
||||||
|
|
||||||
scroll_display_message();
|
|
||||||
} else {
|
} else {
|
||||||
/* Everyone else needs to reset the timer int here as
|
/* Everyone else needs to reset the timer int here as
|
||||||
ll_local_timer_interrupt doesn't */
|
ll_local_timer_interrupt doesn't */
|
||||||
@@ -262,6 +233,8 @@ void __init mips_time_init(void)
|
|||||||
(est_freq%1000000)*100/1000000);
|
(est_freq%1000000)*100/1000000);
|
||||||
|
|
||||||
cpu_khz = est_freq / 1000;
|
cpu_khz = est_freq / 1000;
|
||||||
|
|
||||||
|
mips_scroll_message();
|
||||||
}
|
}
|
||||||
|
|
||||||
void __init plat_timer_setup(struct irqaction *irq)
|
void __init plat_timer_setup(struct irqaction *irq)
|
||||||
|
@@ -56,6 +56,12 @@ const char *get_system_type(void)
|
|||||||
return "MIPS Malta";
|
return "MIPS Malta";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_MIPS_MT_SMTC)
|
||||||
|
const char display_string[] = " SMTC LINUX ON MALTA ";
|
||||||
|
#else
|
||||||
|
const char display_string[] = " LINUX ON MALTA ";
|
||||||
|
#endif /* CONFIG_MIPS_MT_SMTC */
|
||||||
|
|
||||||
#ifdef CONFIG_BLK_DEV_FD
|
#ifdef CONFIG_BLK_DEV_FD
|
||||||
void __init fd_activate(void)
|
void __init fd_activate(void)
|
||||||
{
|
{
|
||||||
|
@@ -43,6 +43,8 @@ const char *get_system_type(void)
|
|||||||
return "MIPS SEAD";
|
return "MIPS SEAD";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char display_string[] = " LINUX ON SEAD ";
|
||||||
|
|
||||||
void __init plat_mem_setup(void)
|
void __init plat_mem_setup(void)
|
||||||
{
|
{
|
||||||
ioport_resource.end = 0x7fffffff;
|
ioport_resource.end = 0x7fffffff;
|
||||||
|
@@ -33,6 +33,7 @@ extern void prom_meminit(void);
|
|||||||
extern void prom_fixup_mem_map(unsigned long start_mem, unsigned long end_mem);
|
extern void prom_fixup_mem_map(unsigned long start_mem, unsigned long end_mem);
|
||||||
extern void mips_display_message(const char *str);
|
extern void mips_display_message(const char *str);
|
||||||
extern void mips_display_word(unsigned int num);
|
extern void mips_display_word(unsigned int num);
|
||||||
|
extern void mips_scroll_message(void);
|
||||||
extern int get_ethernet_addr(char *ethernet_addr);
|
extern int get_ethernet_addr(char *ethernet_addr);
|
||||||
|
|
||||||
/* Memory descriptor management. */
|
/* Memory descriptor management. */
|
||||||
|
Reference in New Issue
Block a user