Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 280003
b: refs/heads/master
c: 93edd02
h: refs/heads/master
i:
  280001: 8c76140
  279999: fa2f501
v: v3
  • Loading branch information
Finn Thain authored and Geert Uytterhoeven committed Dec 10, 2011
1 parent 86e5f5b commit 5f0070a
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 60 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: f9994894953d6bd9d5ed2719a34d027a4e0c2131
refs/heads/master: 93edd023a7de1ea4fe6e5de631982b96156eef03
2 changes: 1 addition & 1 deletion trunk/arch/m68k/Kconfig.debug
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ source "lib/Kconfig.debug"

config EARLY_PRINTK
bool "Early printk" if EMBEDDED
depends on MVME16x
depends on MVME16x || MAC
default y
help
Write kernel log output directly to a serial port.
Expand Down
117 changes: 59 additions & 58 deletions trunk/arch/m68k/kernel/head.S
Original file line number Diff line number Diff line change
Expand Up @@ -250,9 +250,8 @@
* USE_MFP: Use the ST-MFP port (Modem1) for serial debug.
*
* Macintosh constants:
* MAC_SERIAL_DEBUG: Turns on serial debug output for the Macintosh.
* MAC_USE_SCC_A: Use the SCC port A (modem) for serial debug.
* MAC_USE_SCC_B: Use the SCC port B (printer) for serial debug (default).
* MAC_USE_SCC_A: Use SCC port A (modem) for serial debug and early console.
* MAC_USE_SCC_B: Use SCC port B (printer) for serial debug and early console.
*/

#include <linux/linkage.h>
Expand All @@ -268,33 +267,25 @@

#include <asm/machw.h>

/*
* Macintosh console support
*/

#ifdef CONFIG_FRAMEBUFFER_CONSOLE
#define CONSOLE
#define CONSOLE_PENGUIN
#endif

/*
* Macintosh serial debug support; outputs boot info to the printer
* and/or modem serial ports
*/
#undef MAC_SERIAL_DEBUG
#ifdef CONFIG_EARLY_PRINTK
#define SERIAL_DEBUG
#else
#undef SERIAL_DEBUG
#endif

/*
* Macintosh serial debug port selection; define one or both;
* requires MAC_SERIAL_DEBUG to be defined
*/
#define MAC_USE_SCC_A /* Macintosh modem serial port */
#define MAC_USE_SCC_B /* Macintosh printer serial port */
#else /* !CONFIG_MAC */

#endif /* CONFIG_MAC */
#define SERIAL_DEBUG

#endif /* !CONFIG_MAC */

#undef MMU_PRINT
#undef MMU_NOCACHE_KERNEL
#define SERIAL_DEBUG
#undef DEBUG

/*
Expand Down Expand Up @@ -655,11 +646,11 @@ ENTRY(__start)
lea %pc@(L(mac_rowbytes)),%a1
movel %a0@,%a1@

#ifdef MAC_SERIAL_DEBUG
#ifdef SERIAL_DEBUG
get_bi_record BI_MAC_SCCBASE
lea %pc@(L(mac_sccbase)),%a1
movel %a0@,%a1@
#endif /* MAC_SERIAL_DEBUG */
#endif

#if 0
/*
Expand Down Expand Up @@ -1427,7 +1418,7 @@ L(mmu_fixup_done):
subl %d0,L(console_font)
subl %d0,L(console_font_data)
#endif
#ifdef MAC_SERIAL_DEBUG
#ifdef SERIAL_DEBUG
orl #0x50000000,L(mac_sccbase)
#endif
1:
Expand Down Expand Up @@ -1917,7 +1908,7 @@ mmu_030_print:
jbne 30b

mmu_print_done:
puts "\n\n"
puts "\n"

func_return mmu_print

Expand Down Expand Up @@ -2768,7 +2759,7 @@ L(scc_initable_mac):
.byte 9,0 /* no interrupts */
.byte 10,0 /* NRZ */
.byte 11,0x50 /* use baud rate generator */
.byte 12,10,13,0 /* 9600 baud */
.byte 12,1,13,0 /* 38400 baud */
.byte 14,1 /* Baud rate generator enable */
.byte 3,0xc1 /* enable receiver */
.byte 5,0xea /* enable transmitter */
Expand Down Expand Up @@ -2906,10 +2897,12 @@ func_start serial_init,%d0/%d1/%a0/%a1
#endif
#ifdef CONFIG_MAC
is_not_mac(L(serial_init_not_mac))
#ifdef MAC_SERIAL_DEBUG
#if !defined(MAC_USE_SCC_A) && !defined(MAC_USE_SCC_B)
#define MAC_USE_SCC_B
#endif

#ifdef SERIAL_DEBUG
/* You may define either or both of these. */
#define MAC_USE_SCC_A /* Modem port */
#define MAC_USE_SCC_B /* Printer port */

#define mac_scc_cha_b_ctrl_offset 0x0
#define mac_scc_cha_a_ctrl_offset 0x2
#define mac_scc_cha_b_data_offset 0x4
Expand Down Expand Up @@ -2940,7 +2933,7 @@ func_start serial_init,%d0/%d1/%a0/%a1
jra 7b
8:
#endif /* MAC_USE_SCC_B */
#endif /* MAC_SERIAL_DEBUG */
#endif /* SERIAL_DEBUG */

jra L(serial_init_done)
L(serial_init_not_mac):
Expand Down Expand Up @@ -3011,7 +3004,7 @@ func_start serial_putc,%d0/%d1/%a0/%a1
#ifdef CONFIG_MAC
is_not_mac(5f)

#ifdef MAC_SERIAL_DEBUG
#ifdef SERIAL_DEBUG

#ifdef MAC_USE_SCC_A
movel %pc@(L(mac_sccbase)),%a1
Expand All @@ -3029,7 +3022,7 @@ func_start serial_putc,%d0/%d1/%a0/%a1
moveb %d0,%a1@(mac_scc_cha_b_data_offset)
#endif /* MAC_USE_SCC_B */

#endif /* MAC_SERIAL_DEBUG */
#endif /* SERIAL_DEBUG */

jra L(serial_putc_done)
5:
Expand Down Expand Up @@ -3248,33 +3241,39 @@ func_return putn

#ifdef CONFIG_MAC
/*
* mac_serial_print
* mac_early_print
*
* This routine takes its parameters on the stack. It then
* turns around and calls the internal routine. This routine
* is used until the Linux console driver initializes itself.
* turns around and calls the internal routines. This routine
* is used by the boot console.
*
* The calling parameters are:
* void mac_serial_print(const char *str);
* void mac_early_print(const char *str, unsigned length);
*
* This routine does NOT understand variable arguments only
* simple strings!
*/
ENTRY(mac_serial_print)
moveml %d0/%a0,%sp@-
#if 1
move %sr,%sp@-
ENTRY(mac_early_print)
moveml %d0/%d1/%a0,%sp@-
movew %sr,%sp@-
ori #0x0700,%sr
#endif
movel %sp@(10),%a0 /* fetch parameter */
movel %sp@(18),%a0 /* fetch parameter */
movel %sp@(22),%d1 /* fetch parameter */
jra 2f
1: serial_putc %d0
2: moveb %a0@+,%d0
jne 1b
#if 1
move %sp@+,%sr
1:
#ifdef CONSOLE
console_putc %d0
#endif
moveml %sp@+,%d0/%a0
#ifdef SERIAL_DEBUG
serial_putc %d0
#endif
subq #1,%d1
2: jeq 3f
moveb %a0@+,%d0
jne 1b
3:
movew %sp@+,%sr
moveml %sp@+,%d0/%d1/%a0
rts
#endif /* CONFIG_MAC */

Expand Down Expand Up @@ -3409,10 +3408,10 @@ func_start console_put_stats,%a0/%d7
* a0 = pointer to boot_info
* d7 = value of boot_info fields
*/
puts "\nMacLinux\n\n"
puts "\nMacLinux\n"

#ifdef SERIAL_DEBUG
puts " vidaddr:"
puts "\n vidaddr:"
putn %pc@(L(mac_videobase)) /* video addr. */

puts "\n _stext:"
Expand All @@ -3423,19 +3422,21 @@ func_start console_put_stats,%a0/%d7
lea %pc@(_end),%a0
putn %a0

puts "\ncpuid:"
puts "\n cpuid:"
putn %pc@(L(cputype))
putc '\n'

#ifdef MAC_SERIAL_DEBUG
# ifdef CONFIG_MAC
puts "\n sccbase:"
putn %pc@(L(mac_sccbase))
# endif
# ifdef MMU_PRINT
putc '\n'
#endif
# if defined(MMU_PRINT)
jbsr mmu_print_machine_cpu_types
# endif /* MMU_PRINT */
# endif
#endif /* SERIAL_DEBUG */

putc '\n'

func_return console_put_stats

#ifdef CONSOLE_PENGUIN
Expand Down Expand Up @@ -3896,11 +3897,11 @@ L(mac_dimensions):
.long 0
L(mac_rowbytes):
.long 0
#ifdef MAC_SERIAL_DEBUG
#ifdef SERIAL_DEBUG
L(mac_sccbase):
.long 0
#endif /* MAC_SERIAL_DEBUG */
#endif
#endif /* CONFIG_MAC */

#if defined (CONFIG_APOLLO)
LSRB0 = 0x10412
Expand Down
29 changes: 29 additions & 0 deletions trunk/arch/m68k/mac/config.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,31 @@ static void mac_get_model(char *str);
static void mac_identify(void);
static void mac_report_hardware(void);

#ifdef CONFIG_EARLY_PRINTK
asmlinkage void __init mac_early_print(const char *s, unsigned n);

static void __init mac_early_cons_write(struct console *con,
const char *s, unsigned n)
{
mac_early_print(s, n);
}

static struct console __initdata mac_early_cons = {
.name = "early",
.write = mac_early_cons_write,
.flags = CON_PRINTBUFFER | CON_BOOT,
.index = -1
};

int __init mac_unregister_early_cons(void)
{
/* mac_early_print can't be used after init sections are discarded */
return unregister_console(&mac_early_cons);
}

late_initcall(mac_unregister_early_cons);
#endif

static void __init mac_sched_init(irq_handler_t vector)
{
via_init_clock(vector);
Expand Down Expand Up @@ -164,6 +189,10 @@ void __init config_mac(void)
mach_beep = mac_mksound;
#endif

#ifdef CONFIG_EARLY_PRINTK
register_console(&mac_early_cons);
#endif

/*
* Determine hardware present
*/
Expand Down

0 comments on commit 5f0070a

Please sign in to comment.