linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs
@ 2010-03-25 20:04 Hans J. Koch
  2010-03-25 20:07 ` [PATCH 1/7 v2] Introduce plat-tcc Hans J. Koch
                   ` (6 more replies)
  0 siblings, 7 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:04 UTC (permalink / raw)
  To: linux-arm-kernel

This is v2 of my patch series to introduce basic support for Telechips
TCC8xxx SoCs. It addresses the issues found after v1. They're all in
[PATCH 5/7] (mapping of DTCM and SDRAM). I threw out both mappings.
They've got no users right now, and the datasheet is not very clear
about the DTCM. I need to get more information from Telechips and run
my own tests.

Please review.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/7 v2] Introduce plat-tcc
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
@ 2010-03-25 20:07 ` Hans J. Koch
  2010-03-25 20:31   ` Russell King - ARM Linux
  2010-03-25 20:09 ` [PATCH 2/7 v2] Add clock framework for plat-tcc Hans J. Koch
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:07 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/7 v2] Add clock framework for plat-tcc
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
  2010-03-25 20:07 ` [PATCH 1/7 v2] Introduce plat-tcc Hans J. Koch
@ 2010-03-25 20:09 ` Hans J. Koch
  2010-03-25 20:32   ` Russell King - ARM Linux
  2010-03-25 20:10 ` [PATCH 3/7 v2] Introduce plat-tcc irq framework Hans J. Koch
                   ` (4 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:09 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3/7 v2] Introduce plat-tcc irq framework
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
  2010-03-25 20:07 ` [PATCH 1/7 v2] Introduce plat-tcc Hans J. Koch
  2010-03-25 20:09 ` [PATCH 2/7 v2] Add clock framework for plat-tcc Hans J. Koch
@ 2010-03-25 20:10 ` Hans J. Koch
  2010-03-25 20:33   ` Russell King - ARM Linux
  2010-03-25 20:12 ` [PATCH 4/7 v2] Add TCC8xxx system timer Hans J. Koch
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:10 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 4/7 v2] Add TCC8xxx system timer
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
                   ` (2 preceding siblings ...)
  2010-03-25 20:10 ` [PATCH 3/7 v2] Introduce plat-tcc irq framework Hans J. Koch
@ 2010-03-25 20:12 ` Hans J. Koch
  2010-03-25 20:35   ` Russell King - ARM Linux
  2010-03-25 20:15 ` [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k Hans J. Koch
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:12 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
                   ` (3 preceding siblings ...)
  2010-03-25 20:12 ` [PATCH 4/7 v2] Add TCC8xxx system timer Hans J. Koch
@ 2010-03-25 20:15 ` Hans J. Koch
  2010-03-25 20:37   ` Russell King - ARM Linux
  2010-03-25 20:16 ` [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs Hans J. Koch
  2010-03-25 20:18 ` [PATCH 7/7 v2] Add board support for Telechips TCC8000-SDK board Hans J. Koch
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:15 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
                   ` (4 preceding siblings ...)
  2010-03-25 20:15 ` [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k Hans J. Koch
@ 2010-03-25 20:16 ` Hans J. Koch
  2010-03-25 20:38   ` Russell King - ARM Linux
  2010-03-25 20:18 ` [PATCH 7/7 v2] Add board support for Telechips TCC8000-SDK board Hans J. Koch
  6 siblings, 1 reply; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:16 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 7/7 v2] Add board support for Telechips TCC8000-SDK board
  2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
                   ` (5 preceding siblings ...)
  2010-03-25 20:16 ` [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs Hans J. Koch
@ 2010-03-25 20:18 ` Hans J. Koch
  6 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-25 20:18 UTC (permalink / raw)
  To: linux-arm-kernel



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/7 v2] Introduce plat-tcc
  2010-03-25 20:07 ` [PATCH 1/7 v2] Introduce plat-tcc Hans J. Koch
@ 2010-03-25 20:31   ` Russell King - ARM Linux
  2010-03-27 16:02     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:31 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:07:48PM +0100, Hans J. Koch wrote:
> +#define __virt_to_bus(x)	__virt_to_phys(x)
> +#define __bus_to_virt(x)	__phys_to_virt(x)
> +#define __pfn_to_bus(x)		__pfn_to_phys(x)
> +#define __bus_to_pfn(x)		__phys_to_pfn(x)

You don't need to define any of these.

> diff --git a/arch/arm/plat-tcc/include/mach/vmalloc.h b/arch/arm/plat-tcc/include/mach/vmalloc.h
> new file mode 100644
> index 0000000..9635303
> --- /dev/null
> +++ b/arch/arm/plat-tcc/include/mach/vmalloc.h
> @@ -0,0 +1,11 @@
> +/*
> + * Author: <linux@telechips.com>
> + * Created: June 10, 2008
> + *
> + * Copyright (C) 2000 Russell King.
> + * Copyright (C) 2008-2009 Telechips
> + *
> + * Licensed under the terms of the GPL v2.
> + */
> +#define VMALLOC_END	  (PAGE_OFFSET + 0x10000000)

Base address of IO rather than something dependent on PAGE_OFFSET?

> +
> diff --git a/arch/arm/plat-tcc/system.c b/arch/arm/plat-tcc/system.c
> new file mode 100644
> index 0000000..1a33ced
> --- /dev/null
> +++ b/arch/arm/plat-tcc/system.c
> @@ -0,0 +1,24 @@
> +/*
> + * System functions for Telechips TCCxxxx SoCs
> + *
> + * Copyright (C) Hans J. Koch <hjk@linutronix.de>
> + *
> + * Licensed under the terms of the GPL v2.
> + *
> + */
> +
> +#include <asm/io.h>

linux/io.h ?

> +#include <mach/tcc8k-regs.h>
> +
> +/* System reboot */
> +void plat_tcc_reboot(void)
> +{
> +	/* Make sure clocks are on */
> +	__raw_writel(0xffffffff, CKC_BASE + BCLKCTR0_OFFS);
> +
> +	/* Enable watchdog reset */
> +	__raw_writel(0x49, TIMER_BASE + TWDCFG_OFFS);
> +	/* Wait for reset */
> +	unreachable();
> +}
> +
> -- 
> 1.6.3.3
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/7 v2] Add clock framework for plat-tcc
  2010-03-25 20:09 ` [PATCH 2/7 v2] Add clock framework for plat-tcc Hans J. Koch
@ 2010-03-25 20:32   ` Russell King - ARM Linux
  2010-03-27 16:20     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:32 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:09:16PM +0100, Hans J. Koch wrote:
> +#define BCLKCTR0	(void __iomem *)(CKC_BASE + BCLKCTR0_OFFS)
> +#define BCLKCTR1	(void __iomem *)(CKC_BASE + BCLKCTR1_OFFS)

If you define CKC_BASE to have type 'void __iomem *' then all these
cases go away.

> +	reg = __raw_readl(CKC_BASE + CLKCTRL_OFFS);

And this won't warn in the future.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3/7 v2] Introduce plat-tcc irq framework
  2010-03-25 20:10 ` [PATCH 3/7 v2] Introduce plat-tcc irq framework Hans J. Koch
@ 2010-03-25 20:33   ` Russell King - ARM Linux
  2010-03-27 16:33     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:10:58PM +0100, Hans J. Koch wrote:
> +#include <linux/init.h>
> +#include <linux/module.h>
> +#include <linux/sched.h>
> +#include <linux/interrupt.h>
> +#include <linux/ptrace.h>
> +
> +#include <asm/irq.h>
> +#include <asm/mach/irq.h>
> +#include <asm/io.h>

linux/io.h

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 4/7 v2] Add TCC8xxx system timer
  2010-03-25 20:12 ` [PATCH 4/7 v2] Add TCC8xxx system timer Hans J. Koch
@ 2010-03-25 20:35   ` Russell King - ARM Linux
  2010-03-27 16:49     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:35 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:12:48PM +0100, Hans J. Koch wrote:
> diff --git a/arch/arm/mach-tcc8k/time.c b/arch/arm/mach-tcc8k/time.c
> new file mode 100644
> index 0000000..db0a6da
> --- /dev/null
> +++ b/arch/arm/mach-tcc8k/time.c
> @@ -0,0 +1,150 @@
> +/*
> + * TCC8000 system timer setup
> + *
> + * (C) 2009 Hans J. Koch <hjk@linutronix.de>
> + *
> + * Licensed under the terms of the GPL version 2.
> + *
> + */
> +
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +#include <linux/interrupt.h>
> +#include <linux/spinlock.h>
> +#include <linux/irq.h>
> +#include <linux/clk.h>
> +#include <linux/clockchips.h>
> +
> +#include <asm/io.h>

linux/io.h

> +#include <asm/mach/time.h>
> +
> +#include <mach/tcc8k-regs.h>
> +#include <mach/irqs.h>
> +
> +static void __iomem *timer_base;
> +static struct clock_event_device clockevent_tcc;

You don't need this.

> +static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED;

Do you need to keep this state around?

> +
> +static cycle_t tcc_get_cycles(struct clocksource *cs)
> +{
> +	return __raw_readl(timer_base + TC32MCNT_OFFS);
> +}
> +
> +static struct clocksource clocksource_tcc = {
> +	.name		= "tcc_tc32",
> +	.rating		= 200,
> +	.read		= tcc_get_cycles,
> +	.mask		= CLOCKSOURCE_MASK(32),
> +	.shift		= 28,
> +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
> +};
> +
> +static int tcc_set_next_event(unsigned long evt,
> +			      struct clock_event_device *unused)
> +{
> +	unsigned long reg = __raw_readl(timer_base + TC32MCNT_OFFS);
> +
> +	__raw_writel(reg + evt, timer_base + TC32CMP0_OFFS);
> +	return 0;
> +}
> +
> +static void tcc_set_mode(enum clock_event_mode mode,
> +				struct clock_event_device *evt)
> +{
> +	unsigned long tc32irq;
> +
> +	clockevent_mode = mode;
> +
> +	switch (mode) {
> +	case CLOCK_EVT_MODE_ONESHOT:
> +		tc32irq = __raw_readl(timer_base + TC32IRQ_OFFS);
> +		tc32irq |= TC32IRQ_IRQEN0;
> +		__raw_writel(tc32irq, timer_base + TC32IRQ_OFFS);
> +		break;
> +	case CLOCK_EVT_MODE_SHUTDOWN:
> +	case CLOCK_EVT_MODE_UNUSED:
> +		tc32irq = __raw_readl(timer_base + TC32IRQ_OFFS);
> +		tc32irq &= ~TC32IRQ_IRQEN0;
> +		__raw_writel(tc32irq, timer_base + TC32IRQ_OFFS);
> +		break;
> +	case CLOCK_EVT_MODE_PERIODIC:
> +	case CLOCK_EVT_MODE_RESUME:
> +		break;
> +	}
> +}
> +
> +static irqreturn_t tcc8k_timer_interrupt(int irq, void *dev_id)
> +{
> +	struct clock_event_device *evt = &clockevent_tcc;

Change this to:
	struct clock_event_device *evt = dev_id;

> +
> +	/* Acknowledge TC32 interrupt by reading TC32IRQ */
> +	__raw_readl(timer_base + TC32IRQ_OFFS);
> +
> +	evt->event_handler(evt);
> +
> +	return IRQ_HANDLED;
> +}
> +
> +static struct irqaction tcc8k_timer_irq = {
> +	.name		= "TC32_timer",
> +	.flags		= IRQF_DISABLED | IRQF_TIMER,
> +	.handler	= tcc8k_timer_interrupt,
> +};
> +
> +static struct clock_event_device clockevent_tcc = {
> +	.name		= "tcc_timer1",
> +	.features	= CLOCK_EVT_FEAT_ONESHOT,
> +	.shift		= 32,
> +	.set_mode	= tcc_set_mode,
> +	.set_next_event	= tcc_set_next_event,
> +	.rating		= 200,
> +};

And add:
 static struct irqaction tcc8k_timer_irq = {
 	.name		= "TC32_timer",
 	.flags		= IRQF_DISABLED | IRQF_TIMER,
 	.handler	= tcc8k_timer_interrupt,
+	.dev_id		= &clockevent_tcc,
 };

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k
  2010-03-25 20:15 ` [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k Hans J. Koch
@ 2010-03-25 20:37   ` Russell King - ARM Linux
  2010-03-27 17:08     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:37 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:15:09PM +0100, Hans J. Koch wrote:
> +#include <linux/kernel.h>
> +#include <linux/init.h>
> +
> +#include <asm/tlb.h>

You don't need asm/tlb.h in this file.

> +#include <asm/mach/map.h>
> +#include <asm/io.h>

linux/io.h

> +
> +#include <mach/tcc8k-regs.h>
> +
> +/*
> + * The machine specific code may provide the extra mapping besides the
> + * default mapping provided here.
> + */
> +static struct map_desc tcc8k_io_desc[] __initdata = {
> +	{
> +		.virtual	= CS1_BASE_VIRT,	/* CS1 (CS8900) */
> +		.pfn		= __phys_to_pfn(CS1_BASE),
> +		.length		= CS1_SIZE,
> +		.type		= MT_DEVICE
> +	},
> +	{

	}, {

is more conventional and avoids using up valuable vertical screen
realestate.

> +		.virtual	= AHB_PERI_BASE_VIRT,	/* AHB peripherals */
> +		.pfn		= __phys_to_pfn(AHB_PERI_BASE),
> +		.length		= AHB_PERI_SIZE,
> +		.type		= MT_DEVICE
> +	},
> +	{
> +		.virtual	= APB0_PERI_BASE_VIRT,	/* APB peripherals */
> +		.pfn		= __phys_to_pfn(APB0_PERI_BASE),
> +		.length		= APB0_PERI_SIZE,
> +		.type		= MT_DEVICE
> +	},
> +	{
> +		.virtual	= APB1_PERI_BASE_VIRT,	/* APB peripherals */
> +		.pfn		= __phys_to_pfn(APB1_PERI_BASE),
> +		.length		= APB1_PERI_SIZE,
> +		.type		= MT_DEVICE
> +	},
> +	{
> +		.virtual	= EXT_MEM_CTRL_BASE_VIRT, /* Ext. mem.contr. */
> +		.pfn		= __phys_to_pfn(EXT_MEM_CTRL_BASE),
> +		.length		= EXT_MEM_CTRL_SIZE,
> +		.type		= MT_DEVICE
> +	},
> +};
> +
> +/*
> + * Maps common IO regions for tcc8k.
> + *
> + */
> +void __init tcc8k_map_common_io(void)
> +{
> +	iotable_init(tcc8k_io_desc, ARRAY_SIZE(tcc8k_io_desc));
> +}
> +
> diff --git a/arch/arm/plat-tcc/include/mach/io.h b/arch/arm/plat-tcc/include/mach/io.h
> new file mode 100644
> index 0000000..7d84370
> --- /dev/null
> +++ b/arch/arm/plat-tcc/include/mach/io.h
> @@ -0,0 +1,53 @@
> +/*
> + * Based on:    linux/include/asm-arm/arch-sa1100/io.h
> + * Author : <linux@telechips.com>
> + * Created: June 10, 2008
> + * Description: IO definitions for TCC8300 processors and boards
> + *
> + * Copyright (C) 1997-1999 Russell King
> + * Copyright (C) 2008-2009 Telechips
> + *
> + * Modifications for mainline (C) 2009 Hans J. Koch <hjk@linutronix.de>
> + *
> + * Licensed under the terms of the GNU Public License version 2.
> + */
> +
> +#ifndef __ASM_ARM_ARCH_IO_H
> +#define __ASM_ARM_ARCH_IO_H
> +
> +#define IO_SPACE_LIMIT 0xffffffff
> +
> +/*
> + * We don't actually have real ISA nor PCI buses, but there is so many
> + * drivers out there that might just work if we fake them...
> + */
> +#define __io(a)			((void __iomem *)(PCIO_BASE + (a)))

#define __io(a)		__typesafe_io(a)

please.

> +#define __mem_pci(a)		(a)
> +
> +/*
> + * ----------------------------------------------------------------------------
> + * I/O mapping
> + * ----------------------------------------------------------------------------
> + */
> +
> +#define PCIO_BASE	0
> +
> +/* Address Map of Internal Peripherials (Base 0x80000000) */
> +#define IO_PHYS_A			0x80000000
> +#define IO_OFFSET_A			0x70000000 /* Virtual IO = 0xF0000000 */
> +#define IO_SIZE_A			0x100000
> +#define IO_VIRT_A			(IO_PHYS + IO_OFFSET)
> +#define IO_ADDRESS_A(pa)	((pa) + IO_OFFSET)
> +#define IO_P2V_A(pa)		((pa) + IO_OFFSET)
> +#define IO_V2P_A(va)		((va) - IO_OFFSET)

Where is IO_OFFSET defined?

> +
> +/* Address Map of Internal Peripherials (Base 0x90000000) */
> +#define IO_PHYS_B			0x90000000
> +#define IO_OFFSET_B			0x61000000 /* Virtual IO = 0xF1000000 */
> +#define IO_SIZE_B			0x100000
> +#define IO_VIRT_B			(IO_PHYS + IO_OFFSET)
> +#define IO_ADDRESS_B(pa)	((pa) + IO_OFFSET)
> +#define IO_P2V_B(pa)		((pa) + IO_OFFSET)
> +#define IO_V2P_B(va)		((va) - IO_OFFSET)

Ditto.  Would also be useful if they were typesafe.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs
  2010-03-25 20:16 ` [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs Hans J. Koch
@ 2010-03-25 20:38   ` Russell King - ARM Linux
  2010-03-27 17:41     ` Hans J. Koch
  0 siblings, 1 reply; 20+ messages in thread
From: Russell King - ARM Linux @ 2010-03-25 20:38 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 09:16:50PM +0100, Hans J. Koch wrote:
> +#include <linux/init.h>
> +#include <linux/dma-mapping.h>
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/platform_device.h>
> +
> +#include <asm/io.h>

linux/io.h

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 1/7 v2] Introduce plat-tcc
  2010-03-25 20:31   ` Russell King - ARM Linux
@ 2010-03-27 16:02     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 16:02 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:31:07PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:07:48PM +0100, Hans J. Koch wrote:
> > +#define __virt_to_bus(x)	__virt_to_phys(x)
> > +#define __bus_to_virt(x)	__phys_to_virt(x)
> > +#define __pfn_to_bus(x)		__pfn_to_phys(x)
> > +#define __bus_to_pfn(x)		__phys_to_pfn(x)
> 
> You don't need to define any of these.

Right. Removed.

> 
> > diff --git a/arch/arm/plat-tcc/include/mach/vmalloc.h b/arch/arm/plat-tcc/include/mach/vmalloc.h
> > new file mode 100644
> > index 0000000..9635303
> > --- /dev/null
> > +++ b/arch/arm/plat-tcc/include/mach/vmalloc.h
> > @@ -0,0 +1,11 @@
> > +/*
> > + * Author: <linux@telechips.com>
> > + * Created: June 10, 2008
> > + *
> > + * Copyright (C) 2000 Russell King.
> > + * Copyright (C) 2008-2009 Telechips
> > + *
> > + * Licensed under the terms of the GPL v2.
> > + */
> > +#define VMALLOC_END	  (PAGE_OFFSET + 0x10000000)
> 
> Base address of IO rather than something dependent on PAGE_OFFSET?

Fixed.

> 
> > +
> > diff --git a/arch/arm/plat-tcc/system.c b/arch/arm/plat-tcc/system.c
> > new file mode 100644
> > index 0000000..1a33ced
> > --- /dev/null
> > +++ b/arch/arm/plat-tcc/system.c
> > @@ -0,0 +1,24 @@
> > +/*
> > + * System functions for Telechips TCCxxxx SoCs
> > + *
> > + * Copyright (C) Hans J. Koch <hjk@linutronix.de>
> > + *
> > + * Licensed under the terms of the GPL v2.
> > + *
> > + */
> > +
> > +#include <asm/io.h>
> 
> linux/io.h ?

OK.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 2/7 v2] Add clock framework for plat-tcc
  2010-03-25 20:32   ` Russell King - ARM Linux
@ 2010-03-27 16:20     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 16:20 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:32:42PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:09:16PM +0100, Hans J. Koch wrote:
> > +#define BCLKCTR0	(void __iomem *)(CKC_BASE + BCLKCTR0_OFFS)
> > +#define BCLKCTR1	(void __iomem *)(CKC_BASE + BCLKCTR1_OFFS)
> 
> If you define CKC_BASE to have type 'void __iomem *' then all these
> cases go away.

Done.

> 
> > +	reg = __raw_readl(CKC_BASE + CLKCTRL_OFFS);
> 
> And this won't warn in the future.

Right :)

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 3/7 v2] Introduce plat-tcc irq framework
  2010-03-25 20:33   ` Russell King - ARM Linux
@ 2010-03-27 16:33     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 16:33 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:33:07PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:10:58PM +0100, Hans J. Koch wrote:
> > +#include <linux/init.h>
> > +#include <linux/module.h>
> > +#include <linux/sched.h>
> > +#include <linux/interrupt.h>
> > +#include <linux/ptrace.h>
> > +
> > +#include <asm/irq.h>
> > +#include <asm/mach/irq.h>
> > +#include <asm/io.h>
> 
> linux/io.h

Yep, and <linux/sched.h>, <linux/interrupt.h>, and <linux/ptrace.h> are not
needed at all. Fixed.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 4/7 v2] Add TCC8xxx system timer
  2010-03-25 20:35   ` Russell King - ARM Linux
@ 2010-03-27 16:49     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 16:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:35:15PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:12:48PM +0100, Hans J. Koch wrote:
> > diff --git a/arch/arm/mach-tcc8k/time.c b/arch/arm/mach-tcc8k/time.c
> > new file mode 100644
> > index 0000000..db0a6da
> > --- /dev/null
> > +++ b/arch/arm/mach-tcc8k/time.c
> > @@ -0,0 +1,150 @@
> > +/*
> > + * TCC8000 system timer setup
> > + *
> > + * (C) 2009 Hans J. Koch <hjk@linutronix.de>
> > + *
> > + * Licensed under the terms of the GPL version 2.
> > + *
> > + */
> > +
> > +#include <linux/kernel.h>
> > +#include <linux/init.h>
> > +#include <linux/interrupt.h>
> > +#include <linux/spinlock.h>
> > +#include <linux/irq.h>
> > +#include <linux/clk.h>
> > +#include <linux/clockchips.h>
> > +
> > +#include <asm/io.h>
> 
> linux/io.h

OK.

> 
> > +#include <asm/mach/time.h>
> > +
> > +#include <mach/tcc8k-regs.h>
> > +#include <mach/irqs.h>
> > +
> > +static void __iomem *timer_base;
> > +static struct clock_event_device clockevent_tcc;
> 
> You don't need this.

OK.

> 
> > +static enum clock_event_mode clockevent_mode = CLOCK_EVT_MODE_UNUSED;
> 
> Do you need to keep this state around?

Not really. Removed.

> 
> > +
> > +static cycle_t tcc_get_cycles(struct clocksource *cs)
> > +{
> > +	return __raw_readl(timer_base + TC32MCNT_OFFS);
> > +}
> > +
> > +static struct clocksource clocksource_tcc = {
> > +	.name		= "tcc_tc32",
> > +	.rating		= 200,
> > +	.read		= tcc_get_cycles,
> > +	.mask		= CLOCKSOURCE_MASK(32),
> > +	.shift		= 28,
> > +	.flags		= CLOCK_SOURCE_IS_CONTINUOUS,
> > +};
> > +
> > +static int tcc_set_next_event(unsigned long evt,
> > +			      struct clock_event_device *unused)
> > +{
> > +	unsigned long reg = __raw_readl(timer_base + TC32MCNT_OFFS);
> > +
> > +	__raw_writel(reg + evt, timer_base + TC32CMP0_OFFS);
> > +	return 0;
> > +}
> > +
> > +static void tcc_set_mode(enum clock_event_mode mode,
> > +				struct clock_event_device *evt)
> > +{
> > +	unsigned long tc32irq;
> > +
> > +	clockevent_mode = mode;
> > +
> > +	switch (mode) {
> > +	case CLOCK_EVT_MODE_ONESHOT:
> > +		tc32irq = __raw_readl(timer_base + TC32IRQ_OFFS);
> > +		tc32irq |= TC32IRQ_IRQEN0;
> > +		__raw_writel(tc32irq, timer_base + TC32IRQ_OFFS);
> > +		break;
> > +	case CLOCK_EVT_MODE_SHUTDOWN:
> > +	case CLOCK_EVT_MODE_UNUSED:
> > +		tc32irq = __raw_readl(timer_base + TC32IRQ_OFFS);
> > +		tc32irq &= ~TC32IRQ_IRQEN0;
> > +		__raw_writel(tc32irq, timer_base + TC32IRQ_OFFS);
> > +		break;
> > +	case CLOCK_EVT_MODE_PERIODIC:
> > +	case CLOCK_EVT_MODE_RESUME:
> > +		break;
> > +	}
> > +}
> > +
> > +static irqreturn_t tcc8k_timer_interrupt(int irq, void *dev_id)
> > +{
> > +	struct clock_event_device *evt = &clockevent_tcc;
> 
> Change this to:
> 	struct clock_event_device *evt = dev_id;

Done.

> 
> > +
> > +	/* Acknowledge TC32 interrupt by reading TC32IRQ */
> > +	__raw_readl(timer_base + TC32IRQ_OFFS);
> > +
> > +	evt->event_handler(evt);
> > +
> > +	return IRQ_HANDLED;
> > +}
> > +
> > +static struct irqaction tcc8k_timer_irq = {
> > +	.name		= "TC32_timer",
> > +	.flags		= IRQF_DISABLED | IRQF_TIMER,
> > +	.handler	= tcc8k_timer_interrupt,
> > +};
> > +
> > +static struct clock_event_device clockevent_tcc = {
> > +	.name		= "tcc_timer1",
> > +	.features	= CLOCK_EVT_FEAT_ONESHOT,
> > +	.shift		= 32,
> > +	.set_mode	= tcc_set_mode,
> > +	.set_next_event	= tcc_set_next_event,
> > +	.rating		= 200,
> > +};
> 
> And add:
>  static struct irqaction tcc8k_timer_irq = {
>  	.name		= "TC32_timer",
>  	.flags		= IRQF_DISABLED | IRQF_TIMER,
>  	.handler	= tcc8k_timer_interrupt,
> +	.dev_id		= &clockevent_tcc,
>  };

OK, done.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k
  2010-03-25 20:37   ` Russell King - ARM Linux
@ 2010-03-27 17:08     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 17:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:37:58PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:15:09PM +0100, Hans J. Koch wrote:
> > +#include <linux/kernel.h>
> > +#include <linux/init.h>
> > +
> > +#include <asm/tlb.h>
> 
> You don't need asm/tlb.h in this file.

Removed.

> 
> > +#include <asm/mach/map.h>
> > +#include <asm/io.h>
> 
> linux/io.h

OK.

> 
> > +
> > +#include <mach/tcc8k-regs.h>
> > +
> > +/*
> > + * The machine specific code may provide the extra mapping besides the
> > + * default mapping provided here.
> > + */
> > +static struct map_desc tcc8k_io_desc[] __initdata = {
> > +	{
> > +		.virtual	= CS1_BASE_VIRT,	/* CS1 (CS8900) */
> > +		.pfn		= __phys_to_pfn(CS1_BASE),
> > +		.length		= CS1_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> 
> 	}, {
> 
> is more conventional and avoids using up valuable vertical screen
> realestate.

Right, fixed.

> 
> > +		.virtual	= AHB_PERI_BASE_VIRT,	/* AHB peripherals */
> > +		.pfn		= __phys_to_pfn(AHB_PERI_BASE),
> > +		.length		= AHB_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= APB0_PERI_BASE_VIRT,	/* APB peripherals */
> > +		.pfn		= __phys_to_pfn(APB0_PERI_BASE),
> > +		.length		= APB0_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= APB1_PERI_BASE_VIRT,	/* APB peripherals */
> > +		.pfn		= __phys_to_pfn(APB1_PERI_BASE),
> > +		.length		= APB1_PERI_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +	{
> > +		.virtual	= EXT_MEM_CTRL_BASE_VIRT, /* Ext. mem.contr. */
> > +		.pfn		= __phys_to_pfn(EXT_MEM_CTRL_BASE),
> > +		.length		= EXT_MEM_CTRL_SIZE,
> > +		.type		= MT_DEVICE
> > +	},
> > +};
> > +
> > +/*
> > + * Maps common IO regions for tcc8k.
> > + *
> > + */
> > +void __init tcc8k_map_common_io(void)
> > +{
> > +	iotable_init(tcc8k_io_desc, ARRAY_SIZE(tcc8k_io_desc));
> > +}
> > +
> > diff --git a/arch/arm/plat-tcc/include/mach/io.h b/arch/arm/plat-tcc/include/mach/io.h
> > new file mode 100644
> > index 0000000..7d84370
> > --- /dev/null
> > +++ b/arch/arm/plat-tcc/include/mach/io.h
> > @@ -0,0 +1,53 @@
> > +/*
> > + * Based on:    linux/include/asm-arm/arch-sa1100/io.h
> > + * Author : <linux@telechips.com>
> > + * Created: June 10, 2008
> > + * Description: IO definitions for TCC8300 processors and boards
> > + *
> > + * Copyright (C) 1997-1999 Russell King
> > + * Copyright (C) 2008-2009 Telechips
> > + *
> > + * Modifications for mainline (C) 2009 Hans J. Koch <hjk@linutronix.de>
> > + *
> > + * Licensed under the terms of the GNU Public License version 2.
> > + */
> > +
> > +#ifndef __ASM_ARM_ARCH_IO_H
> > +#define __ASM_ARM_ARCH_IO_H
> > +
> > +#define IO_SPACE_LIMIT 0xffffffff
> > +
> > +/*
> > + * We don't actually have real ISA nor PCI buses, but there is so many
> > + * drivers out there that might just work if we fake them...
> > + */
> > +#define __io(a)			((void __iomem *)(PCIO_BASE + (a)))
> 
> #define __io(a)		__typesafe_io(a)
> 
> please.

OK.

> 
> > +#define __mem_pci(a)		(a)
> > +
> > +/*
> > + * ----------------------------------------------------------------------------
> > + * I/O mapping
> > + * ----------------------------------------------------------------------------
> > + */
> > +
> > +#define PCIO_BASE	0
> > +
> > +/* Address Map of Internal Peripherials (Base 0x80000000) */
> > +#define IO_PHYS_A			0x80000000
> > +#define IO_OFFSET_A			0x70000000 /* Virtual IO = 0xF0000000 */
> > +#define IO_SIZE_A			0x100000
> > +#define IO_VIRT_A			(IO_PHYS + IO_OFFSET)
> > +#define IO_ADDRESS_A(pa)	((pa) + IO_OFFSET)
> > +#define IO_P2V_A(pa)		((pa) + IO_OFFSET)
> > +#define IO_V2P_A(va)		((va) - IO_OFFSET)
> 
> Where is IO_OFFSET defined?

Nowhere. Actually, none of these #define IO_* is needed at all. Removed.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs
  2010-03-25 20:38   ` Russell King - ARM Linux
@ 2010-03-27 17:41     ` Hans J. Koch
  0 siblings, 0 replies; 20+ messages in thread
From: Hans J. Koch @ 2010-03-27 17:41 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Mar 25, 2010 at 08:38:45PM +0000, Russell King - ARM Linux wrote:
> On Thu, Mar 25, 2010 at 09:16:50PM +0100, Hans J. Koch wrote:
> > +#include <linux/init.h>
> > +#include <linux/dma-mapping.h>
> > +#include <linux/kernel.h>
> > +#include <linux/module.h>
> > +#include <linux/platform_device.h>
> > +
> > +#include <asm/io.h>
> 
> linux/io.h

OK.

Thanks,
Hans

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2010-03-27 17:41 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-25 20:04 [PATCH 0/7 v2] Add basic support for Telechips TCC8xxx SoCs Hans J. Koch
2010-03-25 20:07 ` [PATCH 1/7 v2] Introduce plat-tcc Hans J. Koch
2010-03-25 20:31   ` Russell King - ARM Linux
2010-03-27 16:02     ` Hans J. Koch
2010-03-25 20:09 ` [PATCH 2/7 v2] Add clock framework for plat-tcc Hans J. Koch
2010-03-25 20:32   ` Russell King - ARM Linux
2010-03-27 16:20     ` Hans J. Koch
2010-03-25 20:10 ` [PATCH 3/7 v2] Introduce plat-tcc irq framework Hans J. Koch
2010-03-25 20:33   ` Russell King - ARM Linux
2010-03-27 16:33     ` Hans J. Koch
2010-03-25 20:12 ` [PATCH 4/7 v2] Add TCC8xxx system timer Hans J. Koch
2010-03-25 20:35   ` Russell King - ARM Linux
2010-03-27 16:49     ` Hans J. Koch
2010-03-25 20:15 ` [PATCH 5/7 v2] Basic IO mappings for mach-tcc8k Hans J. Koch
2010-03-25 20:37   ` Russell King - ARM Linux
2010-03-27 17:08     ` Hans J. Koch
2010-03-25 20:16 ` [PATCH 6/7 v2] Add common platform devices for TCC8xxx SoCs Hans J. Koch
2010-03-25 20:38   ` Russell King - ARM Linux
2010-03-27 17:41     ` Hans J. Koch
2010-03-25 20:18 ` [PATCH 7/7 v2] Add board support for Telechips TCC8000-SDK board Hans J. Koch

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).