public inbox for linux-m68k@lists.linux-m68k.org
 help / color / mirror / Atom feed
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

  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