* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.