From: David Gibson <david@gibson.dropbear.id.au>
To: Scott Wood <scottwood@freescale.com>
Cc: linuxppc-dev@ozlabs.org
Subject: Re: [PATCH 3/3] Add early debug console for CPM serial ports.
Date: Wed, 29 Aug 2007 15:45:40 +1000 [thread overview]
Message-ID: <20070829054540.GD3206@localhost.localdomain> (raw)
In-Reply-To: <20070828201621.GC24210@ld0162-tx32.am.freescale.net>
On Tue, Aug 28, 2007 at 03:16:21PM -0500, Scott Wood wrote:
> This code assumes that the ports have been previously set up, with
> buffers in DPRAM, and the descriptor address defined by platform code.
>
> Signed-off-by: Scott Wood <scottwood@freescale.com>
> ---
> arch/powerpc/Kconfig.debug | 9 +++++++
> arch/powerpc/kernel/head_32.S | 16 +++++++++++++
> arch/powerpc/kernel/udbg.c | 2 +
> arch/powerpc/sysdev/Makefile | 1 +
> arch/powerpc/sysdev/cpm_common.c | 44 ++++++++++++++++++++++++++++++++++++++
> arch/powerpc/sysdev/cpm_common.h | 16 +++++++++++++
> include/asm-powerpc/udbg.h | 1 +
> 7 files changed, 89 insertions(+), 0 deletions(-)
> create mode 100644 arch/powerpc/sysdev/cpm_common.c
> create mode 100644 arch/powerpc/sysdev/cpm_common.h
>
> diff --git a/arch/powerpc/Kconfig.debug b/arch/powerpc/Kconfig.debug
> index 22acece..d471154 100644
> --- a/arch/powerpc/Kconfig.debug
> +++ b/arch/powerpc/Kconfig.debug
> @@ -211,6 +211,15 @@ config PPC_EARLY_DEBUG_44x
> Select this to enable early debugging for IBM 44x chips via the
> inbuilt serial port.
>
> +config PPC_EARLY_DEBUG_CPM
> + bool "Early serial debugging for Freescale CPM-based serial ports"
> + depends on SERIAL_CPM
> + select PIN_TLB if PPC_8xx
I see this Kconfig line, but I don't see any code below that would set
up a suitable TLB on 8xx for the CPM...?
[snip]
> diff --git a/arch/powerpc/sysdev/Makefile b/arch/powerpc/sysdev/Makefile
> index 08ce31e..5063e74 100644
> --- a/arch/powerpc/sysdev/Makefile
> +++ b/arch/powerpc/sysdev/Makefile
> @@ -34,6 +34,7 @@ endif
>
> # Temporary hack until we have migrated to asm-powerpc
> ifeq ($(ARCH),powerpc)
> +obj-$(CONFIG_CPM1)$(CONFIG_CPM2) += cpm_common.o
Uh.. I don't think this will work properly. If CONFIG_CPM1 and
CONFIG_CPM2 are both enabled, it will set obj-yy rather than obj-y.
> obj-$(CONFIG_CPM2) += cpm2_common.o cpm2_pic.o
> obj-$(CONFIG_8xx) += mpc8xx_pic.o commproc.o
> obj-$(CONFIG_UCODE_PATCH) += micropatch.o
> diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c
> new file mode 100644
> index 0000000..1972a8f
> --- /dev/null
> +++ b/arch/powerpc/sysdev/cpm_common.c
> @@ -0,0 +1,44 @@
> +/*
> + * Common CPM code
> + *
> + * Author: Scott Wood <scottwood@freescale.com>
> + *
> + * Copyright 2007 Freescale Semiconductor, Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of version 2 of the GNU General Public License as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/init.h>
> +#include <asm/udbg.h>
> +#include <asm/io.h>
> +#include <asm/system.h>
> +#include <mm/mmu_decl.h>
> +#include "cpm_common.h"
> +
> +#ifdef CONFIG_PPC_EARLY_DEBUG_CPM
> +static void udbg_putc_cpm(char c)
> +{
> + u8 __iomem *txbuf = (u8 __iomem __force *)in_be32(&cpm_udbg_txdesc[1]);
> +
> + if (c == '\n')
> + udbg_putc('\r');
> +
> + while (in_be32(&cpm_udbg_txdesc[0]) & 0x80000000)
> + ;
> +
> + out_8(txbuf, c);
> + out_be32(&cpm_udbg_txdesc[0], 0xa0000001);
> +}
> +
> +void __init udbg_init_cpm(void)
> +{
> + if (cpm_udbg_txdesc) {
> +#ifdef CONFIG_CPM2
> + setbat(1, 0xf0000000, 0xf0000000, 1024*1024, _PAGE_IO);
> +#endif
> + udbg_putc = udbg_putc_cpm;
> + }
> +}
> +#endif
Since this is all udbg related, it could go (within an ifdef) into
udbg.c rather than creating a new file for it.
> diff --git a/arch/powerpc/sysdev/cpm_common.h b/arch/powerpc/sysdev/cpm_common.h
> new file mode 100644
> index 0000000..f42343f
> --- /dev/null
> +++ b/arch/powerpc/sysdev/cpm_common.h
> @@ -0,0 +1,16 @@
> +#ifndef _POWERPC_SYSDEV_CPM_COMMON_H
> +#define _POWERPC_SYSDEV_CPM_COMMON_H
> +
> +#include <linux/types.h>
> +
> +/*
> + * Board code must define this address if the early console is used.
> + *
> + * Note that this is not multi-platform safe, and thus the CPM
> + * UDBG console must only be enabled when only a single platform
> + * is selected. It is done this way because udbg init runs before
> + * platform probing.
> + */
> +extern u32 __iomem *cpm_udbg_txdesc;
Urg... this is ugly, because it looks like it can be muti-platform,
but actually isn't. I think a better approach is to set the magic
address as a Kconfig variable, as we do on 44x. This approach can
also be useful for hacking up early debug for new chips during the
process of creating platform code for them.
> +
> +#endif
> diff --git a/include/asm-powerpc/udbg.h b/include/asm-powerpc/udbg.h
> index ce9d82f..a9e0b0e 100644
> --- a/include/asm-powerpc/udbg.h
> +++ b/include/asm-powerpc/udbg.h
> @@ -48,6 +48,7 @@ extern void __init udbg_init_rtas_console(void);
> extern void __init udbg_init_debug_beat(void);
> extern void __init udbg_init_btext(void);
> extern void __init udbg_init_44x_as1(void);
> +extern void __init udbg_init_cpm(void);
>
> #endif /* __KERNEL__ */
> #endif /* _ASM_POWERPC_UDBG_H */
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
next prev parent reply other threads:[~2007-08-29 5:45 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-28 20:11 [PATCH v3 1/8] Generic bitbanged MDIO library Scott Wood
2007-08-28 20:14 ` [PATCH v3 2/8] fs_enet: Whitespace cleanup Scott Wood
2007-08-28 20:14 ` [PATCH v3 3/8] fs_enet: Include linux/string.h from linux/fs_enet_pd.h Scott Wood
2007-08-28 20:14 ` [PATCH v3 4/8] fs_enet: Don't share the interrupt Scott Wood
2007-08-28 20:14 ` [PATCH v3 5/8] fs_enet: mac-fcc: Eliminate __fcc-* macros Scott Wood
2007-08-28 20:14 ` [PATCH v3 6/8] fs_enet: Align receive buffers Scott Wood
2007-08-28 20:14 ` [PATCH v3 7/8] fs_enet: Be an of_platform device when CONFIG_PPC_CPM_NEW_BINDING is set Scott Wood
2007-08-28 20:14 ` [PATCH v3 8/8] fs_enet: sparse fixes Scott Wood
2007-08-28 20:16 ` [PATCH 1/3] fsl_soc.c cleanup Scott Wood
2007-08-29 5:30 ` David Gibson
2007-09-11 5:35 ` Kumar Gala
2007-09-11 13:57 ` Scott Wood
2007-09-11 15:48 ` Kumar Gala
2007-09-11 15:51 ` Scott Wood
2007-09-11 16:22 ` Kumar Gala
2007-09-11 16:24 ` Scott Wood
2007-09-11 16:45 ` SOC registers/immr determination from device tree (was Re: [PATCH 1/3] fsl_soc.c cleanup) Kumar Gala
2007-09-11 17:03 ` Scott Wood
2007-09-11 17:08 ` Josh Boyer
2007-09-11 17:54 ` Kumar Gala
2007-08-28 20:16 ` [PATCH 2/3] Introduce new CPM device bindings Scott Wood
2007-08-29 5:39 ` David Gibson
2007-08-29 13:58 ` Scott Wood
2007-08-30 0:55 ` David Gibson
2007-08-30 5:48 ` Scott Wood
2007-08-30 5:58 ` David Gibson
2007-08-30 14:10 ` Scott Wood
2007-08-31 2:48 ` David Gibson
2007-08-28 20:16 ` [PATCH 3/3] Add early debug console for CPM serial ports Scott Wood
2007-08-29 5:45 ` David Gibson [this message]
2007-08-29 14:02 ` Scott Wood
2007-08-29 19:58 ` Scott Wood
2007-08-30 0:58 ` David Gibson
2007-08-30 0:57 ` David Gibson
2007-08-28 20:16 ` [PATCH 1/4] ppc: Add clrbits8 and setbits8 Scott Wood
2007-08-28 20:16 ` [PATCH 2/4] cpm_uart: Be an of_platform device when CONFIG_PPC_CPM_NEW_BINDING is set Scott Wood
2007-08-28 20:16 ` [PATCH 3/4] cpm_uart: sparse fixes Scott Wood
2007-08-28 20:16 ` [PATCH 4/4] cpm_uart: Issue STOP_TX command before initializing console Scott Wood
2007-08-28 20:17 ` [PATCH 1/9] 8xx: Fix CONFIG_PIN_TLB Scott Wood
2007-08-29 21:09 ` Vitaly Bordug
2007-08-28 20:17 ` [PATCH 2/9] 8xx: Infrastructure code cleanup Scott Wood
2007-09-13 7:11 ` David Gibson
2007-09-13 8:16 ` Vitaly Bordug
2007-09-14 4:09 ` David Gibson
2007-09-14 8:21 ` Vitaly Bordug
2007-09-15 2:25 ` David Gibson
2007-09-13 14:40 ` Scott Wood
2007-08-28 20:17 ` [PATCH 3/9] 8xx: Add pin and clock setting functions Scott Wood
2007-08-29 21:38 ` Vitaly Bordug
2007-08-31 20:44 ` Scott Wood
2007-09-05 7:39 ` Vitaly Bordug
2007-09-05 17:37 ` Scott Wood
2007-08-28 20:17 ` [PATCH 4/9] 8xx: Work around CPU15 erratum Scott Wood
2007-08-28 20:17 ` [PATCH 5/9] 8xx: Don't call non-existent Soft_emulate_8xx from SoftwareEmulation Scott Wood
2007-08-28 20:17 ` [PATCH 6/9] 8xx: Set initial memory limit John Traill
2007-08-28 20:19 ` Scott Wood
2007-08-28 20:19 ` [PATCH 7/9] 8xx: mpc885ads cleanup Scott Wood
2007-08-29 22:03 ` Vitaly Bordug
2007-08-28 20:19 ` [PATCH 8/9] 8xx: Embedded Planet EP88xC support Scott Wood
2007-08-28 20:19 ` [PATCH 9/9] 8xx: Adder 875 support Scott Wood
2007-08-28 20:19 ` [PATCH 1/9] cpm2: Infrastructure code cleanup Scott Wood
2007-08-28 20:19 ` [PATCH 2/9] cpm2: Fix off-by-one error in setbrg() Scott Wood
2007-08-29 22:09 ` Vitaly Bordug
2007-08-30 20:13 ` Scott Wood
2007-08-30 21:52 ` Vitaly Bordug
2007-08-28 20:19 ` [PATCH 3/9] cpm2: Add SCCs to cpm2_clk_setup(), and cpm2_smc_clk_setup() Scott Wood
2007-08-29 22:25 ` Vitaly Bordug
2007-08-30 20:15 ` Scott Wood
2007-09-04 20:43 ` Vitaly Bordug
2007-08-28 20:19 ` [PATCH 4/9] cpm2: Add cpm2_set_pin() Scott Wood
2007-09-04 20:51 ` Vitaly Bordug
2007-08-28 20:19 ` [PATCH 5/9] mpc82xx: Remove a bunch of cruft that duplicates generic functionality Scott Wood
2007-08-28 20:19 ` [PATCH 6/9] mpc82xx: Rename mpc82xx_ads to mpc8272_ads Scott Wood
2007-08-29 5:55 ` David Gibson
2007-08-28 20:19 ` [PATCH 7/9] mpc8272ads: Change references from 82xx_ADS to 8272_ADS Scott Wood
2007-08-28 20:19 ` [PATCH 8/9] mpc82xx: Update mpc8272ads, and factor out PCI and reset Scott Wood
2007-08-29 22:41 ` Kumar Gala
2007-08-30 5:56 ` Scott Wood
2007-08-30 14:56 ` Kumar Gala
2007-08-30 15:17 ` Scott Wood
2007-08-28 20:19 ` [PATCH 9/9] mpc82xx: Add pq2fads board support Scott Wood
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=20070829054540.GD3206@localhost.localdomain \
--to=david@gibson.dropbear.id.au \
--cc=linuxppc-dev@ozlabs.org \
--cc=scottwood@freescale.com \
/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;
as well as URLs for NNTP newsgroup(s).