From: Michael Schmitz <schmitzmic@gmail.com>
To: Finn Thain <fthain@telegraphics.com.au>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>, linux-m68k@vger.kernel.org
Subject: Re: [PATCH RESEND 4/4] m68k/atari: fix SCC initialization for debug console
Date: Mon, 26 May 2014 20:56:26 +1200 [thread overview]
Message-ID: <538301BA.1070605@gmail.com> (raw)
In-Reply-To: <20140411052759.169790206@telegraphics.com.au>
Finn Thain wrote:
> Fix SCC initialization for Atari as was previously fixed for Mac. It's
> probably not practical to share more code but some attempt is made to
> align the Mac and Atari variants.
>
> Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
>
> ---
> This patch needs testing on Atari. It can't be tested without editing
> macro definitions to enable SCC debug output (which also means disabling
> MFP debug output).
>
> The line rate is changed to 38400 baud to match the Mac code (which
> follows the pmac_zilog serial console default). It would be nice to
> standardize but I don't know whether this is realistic.
>
> The 7.9872 MHz PCLK used in this patch was inferred from the existing code
> as I don't have any hardware data.
>
Might just be my PC not autodetecting this 38400 baud rate right, but
all I get is gibberish from the early console. The original code (still
running at 9600 baud) works.
I'll have to check clock source and rate from the old SCC driver.
> ---
> arch/m68k/kernel/head.S | 34 ++++++++++++++++++++++------------
> 1 file changed, 22 insertions(+), 12 deletions(-)
>
> Index: linux-m68k/arch/m68k/kernel/head.S
> ===================================================================
> --- linux-m68k.orig/arch/m68k/kernel/head.S 2014-03-11 22:43:38.000000000 +1100
> +++ linux-m68k/arch/m68k/kernel/head.S 2014-03-11 22:43:38.000000000 +1100
> @@ -2722,6 +2722,7 @@ func_return get_new_page
> #define MAC_USE_SCC_B /* Printer port */
>
> #if defined(MAC_USE_SCC_A) || defined(MAC_USE_SCC_B)
> +/* Initialisation table for SCC with 3.6864 MHz PCLK */
> L(scc_initable_mac):
> .byte 4,0x44 /* x16, 1 stopbit, no parity */
> .byte 3,0xc0 /* receiver: 8 bpc */
>
That hunk fails to apply when merging this patch alone, i.e. without
applying the other ones from this series first. Probably belongs with
patch 1 where the #if defined() is introduced.
> @@ -2744,17 +2745,14 @@ L(scc_initable_mac):
> #define USE_MFP
>
> #if defined(USE_SCC_A) || defined(USE_SCC_B)
> -#define USE_SCC
> -/* Initialisation table for SCC */
> -L(scc_initable):
> - .byte 9,12 /* Reset */
> - .byte 4,0x44 /* x16, 1 stopbit, no parity */
> +/* Initialisation table for SCC with 7.9872 MHz PCLK */
> +L(scc_initable_atari):
> + .byte 4,0x04 /* x1, 1 stopbit, no parity */
> .byte 3,0xc0 /* receiver: 8 bpc */
> .byte 5,0xe2 /* transmitter: 8 bpc, assert dtr/rts */
> - .byte 9,0 /* no interrupts */
> .byte 10,0 /* NRZ */
> .byte 11,0x50 /* use baud rate generator */
> - .byte 12,24,13,0 /* 9600 baud */
> + .byte 12,102,13,0 /* 38400 baud */
> .byte 14,2,14,3 /* use master clock for BRG, enable */
> .byte 3,0xc1 /* enable receiver */
> .byte 5,0xea /* enable transmitter */
> @@ -2800,7 +2798,7 @@ LMFP_UDR = 0xfffa2f
> */
>
> /*
> - * Initialize serial port hardware for 9600/8/1
> + * Initialize serial port hardware
> */
> func_start serial_init,%d0/%d1/%a0/%a1
> /*
> @@ -2810,7 +2808,7 @@ func_start serial_init,%d0/%d1/%a0/%a1
> * d0 = boot info offset
> * CONFIG_ATARI
> * a0 = address of SCC
> - * a1 = Liobase address/address of scc_initable
> + * a1 = Liobase address/address of scc_initable_atari
> * d0 = init data for serial port
> * CONFIG_MAC
> * a0 = address of SCC
> @@ -2846,9 +2844,21 @@ func_start serial_init,%d0/%d1/%a0/%a1
> moveb %a1@(LPSG_READ),%d0
> bset #5,%d0
> moveb %d0,%a1@(LPSG_WRITE)
> -#elif defined(USE_SCC)
> +#elif defined(USE_SCC_A) || defined(USE_SCC_B)
> lea %a1@(LSCC_CTRL),%a0
> - lea %pc@(L(scc_initable)),%a1
> + /* Reset SCC register pointer */
> + moveb %a0@,%d0
> + /* Reset SCC device: write register pointer then register value */
> + moveb #9,%a0@
> + moveb #0xc0,%a0@
> + /* Wait for 5 PCLK cycles, which is about 63 CPU cycles */
> + /* 5 / 7.9872 MHz = approx. 0.63 us = 63 / 100 MHz */
>
The original Falcon and TT had a 16 MHz CPU clock IIRC.
> + movel #32,%d0
> +2:
> + subq #1,%d0
> + jne 2b
> + /* Initialize channel */
> + lea %pc@(L(scc_initable_atari)),%a1
> 2: moveb %a1@+,%d0
> jmi 3f
> moveb %d0,%a0@
> @@ -3017,7 +3027,7 @@ func_start serial_putc,%d0/%d1/%a0/%a1
> nop
> bset #5,%d0
> moveb %d0,%a1@(LPSG_WRITE)
> -#elif defined(USE_SCC)
> +#elif defined(USE_SCC_A) || defined(USE_SCC_B)
> 3: btst #2,%a1@(LSCC_CTRL)
> jeq 3b
> moveb %d0,%a1@(LSCC_DATA)
>
>
Cheers,
Michael
next prev parent reply other threads:[~2014-05-26 8:57 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-11 5:27 [PATCH RESEND 0/4] m68k: earlyprintk and debug console improvements Finn Thain
2014-04-11 5:27 ` [PATCH RESEND 1/4 v2] m68k: toward platform agnostic framebuffer debug logging Finn Thain
2014-04-11 5:27 ` [PATCH RESEND 2/4 v2] m68k: multi-platform EARLY_PRINTK Finn Thain
2014-04-11 5:28 ` [PATCH RESEND 3/4] m68k/mvme16x: adopt common boot console Finn Thain
2014-04-11 9:19 ` Geert Uytterhoeven
2014-04-12 1:40 ` Finn Thain
2014-04-11 5:28 ` [PATCH RESEND 4/4] m68k/atari: fix SCC initialization for debug console Finn Thain
2014-05-25 9:09 ` Geert Uytterhoeven
2014-05-25 10:37 ` Finn Thain
2014-05-26 1:23 ` Michael Schmitz
2014-05-26 4:30 ` Finn Thain
2014-05-26 1:18 ` Michael Schmitz
2014-05-26 8:56 ` Michael Schmitz [this message]
2014-05-26 9:28 ` Geert Uytterhoeven
2014-05-26 11:43 ` Finn Thain
2014-05-26 12:03 ` Finn Thain
2014-05-26 17:44 ` Andreas Schwab
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=538301BA.1070605@gmail.com \
--to=schmitzmic@gmail.com \
--cc=fthain@telegraphics.com.au \
--cc=geert@linux-m68k.org \
--cc=linux-m68k@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox