Renesas ARM based SoC cleanups for v3.12
cover Renesas ARM based SoC cleanups for v3.12
Hi Olof, Hi Arnd,
please consider the following cleanups for v3.12.
The following changes since commit ad81f0545ef01ea651886dddac4bef6cec930092:
Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-cleanup-for-v3.12
for you to fetch changes up to ebd9616f439a8a46b9dca9a272b342f34c5f3614:
ARM: shmobile: Remove unused mach/dma.h (2013-07-17 10:02:30 +0900)
----------------------------------------------------------------
renesas-cleanup-for-v3.12 Renesas ARM based SoC cleanups for v3.12
* remove mach/dma.h, it is not used
* r8a7778 SoC: Removed unused r8a7778_init_irq
* emev2 SoC: Use less verbose resource declarations
* emev2 SoC: Correct typo in comment
* r8a7790 SoC: Remove redundant init_machine callback
* emev2, r8a7740, r8a7778, r8a7779, sh7372 and sh73a0 SoCs: Remove auxdata
* emev2, r8a73a4, ape6evm, r8a7790 and sh73a0 SoCs, and
lager and kzm9g boards: remove init_irq declaration in machine description
* sh73a0 SoC: pinmux platform device cleanup
* r8a7778 SoC: add __initdata on resource and device data
* armadillo800eva board: Remove unused commend and define
----------------------------------------------------------------
Guennadi Liakhovetski (1):
ARM: shmobile: armadillo800eva: remove left-overs
Kuninori Morimoto (2):
ARM: shmobile: r8a7778: add __initdata on resource and device data
ARM: shmobile: r8a7778: remove r8a7778_init_irq()
Magnus Damm (15):
ARM: shmobile: sh73a0 pinmux platform device cleanup
ARM: shmobile: ape6evm: Remove init_irq declaration in machine description
ARM: shmobile: lager: Remove init_irq declaration in machine description
ARM: shmobile: kzm9g: Remove init_irq declaration in machine description
ARM: shmobile: Remove unused EMEV2 auxdata and callback
ARM: shmobile: Remove unused r8a7740 auxdata table
ARM: shmobile: Remove unused r8a7778 auxdata and callback
ARM: shmobile: Remove unused r8a7779 auxdata table
ARM: shmobile: Remove unused sh7372 auxdata table
ARM: shmobile: Remove unused sh73a0 auxdata table
ARM: shmobile: Remove redundant r8a7790 callback
ARM: shmobile: Remove unused EMEV2/KZM9D early console
ARM: shmobile: Make EMEV2 platform devices more compact
ARM: shmobile: Fix EMEV2 clock comment typo
ARM: shmobile: Remove unused mach/dma.h
Maxime Ripard (4):
ARM: shmobile: emev2: Remove init_irq declaration in machine description
ARM: shmobile: r8a73a4: Remove init_irq declaration in machine description
ARM: shmobile: r8a7790: Remove init_irq declaration in machine description
ARM: shmobile: sh73a0: Remove init_irq declaration in machine description
arch/arm/mach-shmobile/board-ape6evm.c | 2 - arch/arm/mach-shmobile/board-armadillo800eva.c | 9 - arch/arm/mach-shmobile/board-kzm9d.c | 2 +- arch/arm/mach-shmobile/board-kzm9g-reference.c | 2 - arch/arm/mach-shmobile/board-lager.c | 2 - arch/arm/mach-shmobile/clock-emev2.c | 2 +- arch/arm/mach-shmobile/include/mach/dma.h | 1 - arch/arm/mach-shmobile/include/mach/emev2.h | 2 +- arch/arm/mach-shmobile/include/mach/r8a7778.h | 1 - arch/arm/mach-shmobile/setup-emev2.c | 353 +++++------------------- arch/arm/mach-shmobile/setup-r8a73a4.c | 2 - arch/arm/mach-shmobile/setup-r8a7740.c | 16 +- arch/arm/mach-shmobile/setup-r8a7778.c | 72 ++--- arch/arm/mach-shmobile/setup-r8a7779.c | 7 +- arch/arm/mach-shmobile/setup-r8a7790.c | 7 - arch/arm/mach-shmobile/setup-sh7372.c | 7 +- arch/arm/mach-shmobile/setup-sh73a0.c | 34 +-- 17 files changed, 106 insertions(+), 415 deletions(-) delete mode 100644 arch/arm/mach-shmobile/include/mach/dma.h
PATCH 1/22 ARM: shmobile: armadillo800eva: remove left-overs
From: Guennadi Liakhovetski <[email protected]>
A comment and a #define in board-armadillo800eva.c have been left over after recent changes and are no longer relevant or needed, remove them.
--- arch/arm/mach-shmobile/board-armadillo800eva.c | 9 --------- 1 file changed, 9 deletions(-)
arch/arm/mach-shmobile/board-armadillo800eva.c +0 -9
@@ -679,15 +679,6 @@ static struct platform_device vcc_sdhi1 = { };/* SDHI0 */ -/* -* FIXME -* -* It use polling mode here, since -* CD (= Card Detect) pin is not connected to SDHI0_CD. -* We can use IRQ31 as card detect irq, -* but it needs chattering removal operation -*/ -#define IRQ31 irq_pin(31)static struct sh_mobile_sdhi_info sdhi0_info = { .dma_slave_tx =SHDMA_SLAVE_SDHI0_TX , .dma_slave_rx =SHDMA_SLAVE_SDHI0_RX ,
Signature · 1 line
1.7.10.4
PATCH 2/22 ARM: shmobile: r8a7778: add __initdata on resource and device data
In reply to Simon HormanFrom: Kuninori Morimoto <[email protected]>
These data will be kmemdup()'ed on platform_device_add_resources() and platform_device_add_data()
--- arch/arm/mach-shmobile/setup-r8a7778.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
arch/arm/mach-shmobile/setup-r8a7778.c +12 -12
@@ -53,7 +53,7 @@ .irqs = SCIx_IRQ_MUXED(irq), \ } -static struct plat_sci_port scif_platform_data[] = { +static struct plat_sci_port scif_platform_data[]__initdata = {SCIF_INFO (0xffe40000 ,gic_iid (0x66 )),SCIF_INFO (0xffe41000 ,gic_iid (0x67 )),SCIF_INFO (0xffe42000 ,gic_iid (0x68 )),
@@ -63,24 +63,24 @@ static struct plat_sci_port scif_platform_data[] = { };/* TMU */ -static struct resource sh_tmu0_resources[] = { +static struct resource sh_tmu0_resources[]__initdata = {DEFINE_RES_MEM (0xffd80008 ,12 ),DEFINE_RES_IRQ (gic_iid (0x40 )), }; -static struct sh_timer_config sh_tmu0_platform_data = { +static struct sh_timer_config sh_tmu0_platform_data__initdata = { .name ="TMU00" , .channel_offset =0x4 , .timer_bit =0 , .clockevent_rating =200 , }; -static struct resource sh_tmu1_resources[] = { +static struct resource sh_tmu1_resources[]__initdata = {DEFINE_RES_MEM (0xffd80014 ,12 ),DEFINE_RES_IRQ (gic_iid (0x41 )), }; -static struct sh_timer_config sh_tmu1_platform_data = { +static struct sh_timer_config sh_tmu1_platform_data__initdata = { .name ="TMU01" , .channel_offset =0x10 , .timer_bit =1 ,
@@ -189,7 +189,7 @@ USB_PLATFORM_INFO(ehci);USB_PLATFORM_INFO (ohci);/* Ether */ -static struct resource ether_resources[] = { +static struct resource ether_resources[]__initdata = {DEFINE_RES_MEM (0xfde00000 ,0x400 ),DEFINE_RES_IRQ (gic_iid (0x89 )), };
@@ -203,17 +203,17 @@ void __init r8a7778_add_ether_device(struct sh_eth_plat_data *pdata) }/* PFC/GPIO */ -static struct resource pfc_resources[] = { +static struct resource pfc_resources[]__initdata = {DEFINE_RES_MEM (0xfffc0000 ,0x118 ), };#define R8A7778_GPIO (idx) \ -static struct resource r8a7778_gpio##idx##_resources[] = { \ +static struct resource r8a7778_gpio##idx##_resources[] __initdata = { \ DEFINE_RES_MEM(0xffc40000 + 0x1000 * (idx), 0x30), \ DEFINE_RES_IRQ(gic_iid(0x87)), \ }; \ \ -static struct gpio_rcar_config r8a7778_gpio##idx##_platform_data = { \ +static struct gpio_rcar_config r8a7778_gpio##idx##_platform_data __initdata = { \ .gpio_base = 32 * (idx), \ .irq_base = GPIO_IRQ_BASE(idx), \ .number_of_pins = 32, \
@@ -249,7 +249,7 @@ void __init r8a7778_pinmux_init(void) };/* SDHI */ -static struct resource sdhi_resources[] = { +static struct resource sdhi_resources[]__initdata = {/* SDHI0 */ DEFINE_RES_MEM (0xFFE4C000 ,0x100 ),DEFINE_RES_IRQ (gic_iid (0x77 )),
@@ -365,12 +365,12 @@ void __init r8a7778_init_late(void)platform_device_register_full (&ohci_info); } -static struct renesas_intc_irqpin_config irqpin_platform_data = { +static struct renesas_intc_irqpin_config irqpin_platform_data__initdata = { .irq_base =irq_pin (0 ),/* IRQ0 -> IRQ3 */ .sense_bitfield_width =2 , }; -static struct resource irqpin_resources[] = { +static struct resource irqpin_resources[]__initdata = {DEFINE_RES_MEM (0xfe78001c ,4 ),/* ICR1 */ DEFINE_RES_MEM (0xfe780010 ,4 ),/* INTPRI */ DEFINE_RES_MEM (0xfe780024 ,4 ),/* INTREQ */
Signature · 1 line
1.7.10.4
PATCH 3/22 ARM: shmobile: sh73a0 pinmux platform device cleanup
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Use DEFINE_RES_MEM() and platform_device_register_simple() to save a couple of lines of code.
[ remove const from resource pfc_resources to avoid section miss-match
reported by 4.4.5 ]
--- arch/arm/mach-shmobile/setup-sh73a0.c | 25 ++++++------------------- 1 file changed, 6 insertions(+), 19 deletions(-)
arch/arm/mach-shmobile/setup-sh73a0.c +6 -19
@@ -61,29 +61,16 @@ void __init sh73a0_map_io(void)iotable_init (sh73a0_io_desc,ARRAY_SIZE (sh73a0_io_desc)); } -static struct resource sh73a0_pfc_resources[] = { - [0 ] = { - .start =0xe6050000 , - .end =0xe6057fff , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =0xe605801c , - .end =0xe6058027 , - .flags =IORESOURCE_MEM , - } -}; - -static struct platform_device sh73a0_pfc_device = { - .name ="pfc-sh73a0" , - .id =-1 , - .resource = sh73a0_pfc_resources, - .num_resources =ARRAY_SIZE (sh73a0_pfc_resources), +/* PFC */ +static struct resource pfc_resources[]__initdata = { +DEFINE_RES_MEM (0xe6050000 ,0x8000 ), +DEFINE_RES_MEM (0xe605801c ,0x000c ), };void __init sh73a0_pinmux_init (void ) { -platform_device_register (&sh73a0_pfc_device); +platform_device_register_simple ("pfc-sh73a0" ,-1 , pfc_resources, +ARRAY_SIZE (pfc_resources)); }static struct plat_sci_port scif0_platform_data = {
Signature · 1 line
1.7.10.4
PATCH 4/22 ARM: shmobile: emev2: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Maxime Ripard <[email protected]>
Commit ebafed7a ("ARM: irq: Call irqchip_init if no init_irq function is specified") removed the need to explictly setup the init_irq field in the machine description when using only irqchip_init. Remove that declaration for shmobile as well.
--- arch/arm/mach-shmobile/setup-emev2.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/setup-emev2.c +0 -2
@@ -20,7 +20,6 @@#include <linux/init.h> #include <linux/interrupt.h> #include <linux/irq.h> -#include <linux/irqchip.h> #include <linux/platform_device.h> #include <linux/platform_data/gpio-em.h> #include <linux/of_platform.h>
@@ -454,7 +453,6 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") .smp = smp_ops(emev2_smp_ops), .init_early = emev2_init_delay, .nr_irqs = NR_IRQS_LEGACY, - .init_irq = irqchip_init, .init_machine = emev2_add_standard_devices_dt, .dt_compat = emev2_boards_compat_dt,MACHINE_END
Signature · 1 line
1.7.10.4
PATCH 5/22 ARM: shmobile: r8a73a4: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Maxime Ripard <[email protected]>
Commit ebafed7a ("ARM: irq: Call irqchip_init if no init_irq function is specified") removed the need to explictly setup the init_irq field in the machine description when using only irqchip_init. Remove that declaration for shmobile as well.
--- arch/arm/mach-shmobile/setup-r8a73a4.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/setup-r8a73a4.c +0 -2
@@ -18,7 +18,6 @@* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ #include <linux/irq.h> -#include <linux/irqchip.h> #include <linux/kernel.h> #include <linux/of_platform.h> #include <linux/platform_data/irq-renesas-irqc.h>
@@ -194,7 +193,6 @@ static const char *r8a73a4_boards_compat_dt[] __initdata = { };DT_MACHINE_START (R8A73A4_DT ,"Generic R8A73A4 (Flattened Device Tree)" ) - .init_irq = irqchip_init, .init_machine = r8a73a4_add_standard_devices_dt, .init_time = shmobile_timer_init, .dt_compat = r8a73a4_boards_compat_dt,
Signature · 1 line
1.7.10.4
PATCH 6/22 ARM: shmobile: ape6evm: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Remove redundant irqchip_init() callback. The default case of NULL will result in invoking irqchip_init() anyway.
[ horms+renesas at verge.net.au: Trimmed patch to remove portion
that updates the r8a73a4 SoC and altered the subject to use the same format as the patch that updates the r8a73a4. ]
--- arch/arm/mach-shmobile/board-ape6evm.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/board-ape6evm.c +0 -2
@@ -20,7 +20,6 @@#include <linux/gpio.h> #include <linux/interrupt.h> -#include <linux/irqchip.h> #include <linux/kernel.h> #include <linux/pinctrl/machine.h> #include <linux/platform_device.h>
@@ -102,7 +101,6 @@ static const char *ape6evm_boards_compat_dt[] __initdata = { };DT_MACHINE_START (APE6EVM_DT ,"ape6evm" ) - .init_irq = irqchip_init, .init_time = shmobile_timer_init, .init_machine = ape6evm_add_standard_devices, .dt_compat = ape6evm_boards_compat_dt,
Signature · 1 line
1.7.10.4
PATCH 7/22 ARM: shmobile: r8a7790: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Maxime Ripard <[email protected]>
Commit ebafed7a ("ARM: irq: Call irqchip_init if no init_irq function is specified") removed the need to explictly setup the init_irq field in the machine description when using only irqchip_init. Remove that declaration for shmobile as well.
--- arch/arm/mach-shmobile/setup-r8a7790.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/setup-r8a7790.c +0 -2
@@ -19,7 +19,6 @@*/ #include <linux/irq.h> -#include <linux/irqchip.h> #include <linux/kernel.h> #include <linux/of_platform.h> #include <linux/serial_sci.h>
@@ -188,7 +187,6 @@ static const char *r8a7790_boards_compat_dt[] __initdata = { };DT_MACHINE_START (R8A7790_DT ,"Generic R8A7790 (Flattened Device Tree)" ) - .init_irq = irqchip_init, .init_machine = r8a7790_add_standard_devices_dt, .init_time = r8a7790_timer_init, .dt_compat = r8a7790_boards_compat_dt,
Signature · 1 line
1.7.10.4
PATCH 8/22 ARM: shmobile: lager: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Remove redundant irqchip_init() callback. The default case of NULL will result in invoking irqchip_init() anyway.
[ horms+renesas at verge.net.au: Trimmed patch to remove portion
that updates the r8a7790 SoC and altered the subject to use the same format as the patch that updates the r8a7790. ]
--- arch/arm/mach-shmobile/board-lager.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/board-lager.c +0 -2
@@ -22,7 +22,6 @@#include <linux/gpio_keys.h> #include <linux/input.h> #include <linux/interrupt.h> -#include <linux/irqchip.h> #include <linux/kernel.h> #include <linux/leds.h> #include <linux/pinctrl/machine.h>
@@ -103,7 +102,6 @@ static const char *lager_boards_compat_dt[] __initdata = { };DT_MACHINE_START (LAGER_DT ,"lager" ) - .init_irq = irqchip_init, .init_time = r8a7790_timer_init, .init_machine = lager_add_standard_devices, .dt_compat = lager_boards_compat_dt,
Signature · 1 line
1.7.10.4
PATCH 9/22 ARM: shmobile: sh73a0: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Maxime Ripard <[email protected]>
Commit ebafed7a ("ARM: irq: Call irqchip_init if no init_irq function is specified") removed the need to explictly setup the init_irq field in the machine description when using only irqchip_init. Remove that declaration for shmobile as well.
--- arch/arm/mach-shmobile/setup-sh73a0.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/setup-sh73a0.c +0 -2
@@ -22,7 +22,6 @@#include <linux/init.h> #include <linux/interrupt.h> #include <linux/irq.h> -#include <linux/irqchip.h> #include <linux/platform_device.h> #include <linux/of_platform.h> #include <linux/delay.h>
@@ -975,7 +974,6 @@ DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)") .map_io = sh73a0_map_io, .init_early = sh73a0_init_delay, .nr_irqs = NR_IRQS_LEGACY, - .init_irq = irqchip_init, .init_machine = sh73a0_add_standard_devices_dt, .dt_compat = sh73a0_boards_compat_dt,MACHINE_END
Signature · 1 line
1.7.10.4
PATCH 10/22 ARM: shmobile: kzm9g: Remove init_irq declaration in machine description
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Remove redundant irqchip_init() callback. The default case of NULL will result in invoking irqchip_init() anyway.
[ horms+renesas at verge.net.au: Trimmed patch to remove portion
that updates the sh73a0 SoC and altered the subject to use the same format as the patch that updates the sh73a0. ]
--- arch/arm/mach-shmobile/board-kzm9g-reference.c | 2 -- 1 file changed, 2 deletions(-)
arch/arm/mach-shmobile/board-kzm9g-reference.c +0 -2
@@ -24,7 +24,6 @@#include <linux/gpio.h> #include <linux/io.h> #include <linux/irq.h> -#include <linux/irqchip.h> #include <linux/input.h> #include <linux/of_platform.h> #include <linux/pinctrl/machine.h>
@@ -99,7 +98,6 @@ DT_MACHINE_START(KZM9G_DT, "kzm9g-reference") .map_io = sh73a0_map_io, .init_early = sh73a0_init_delay, .nr_irqs = NR_IRQS_LEGACY, - .init_irq = irqchip_init, .init_machine = kzm_init, .init_time = shmobile_timer_init, .dt_compat = kzm9g_boards_compat_dt,
Signature · 1 line
1.7.10.4
PATCH 11/22 ARM: shmobile: Remove unused EMEV2 auxdata and callback
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Replace the SoC-specific callback init_machine() with a NULL to use the default code. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-emev2.c | 10 ---------- 1 file changed, 10 deletions(-)
arch/arm/mach-shmobile/setup-emev2.c +0 -10
@@ -434,15 +434,6 @@ void __init emev2_init_irq(void) }#ifdef CONFIG_USE_OF -static const struct of_dev_auxdata emev2_auxdata_lookup[]__initconst = { - { } -}; - -static void __init emev2_add_standard_devices_dt (void ) -{ -of_platform_populate (NULL , of_default_bus_match_table, - emev2_auxdata_lookup,NULL ); -}static const char *emev2_boards_compat_dt[]__initdata = { "renesas,emev2",
@@ -453,7 +444,6 @@ DT_MACHINE_START(EMEV2_DT, "Generic Emma Mobile EV2 (Flattened Device Tree)") .smp = smp_ops(emev2_smp_ops), .init_early = emev2_init_delay, .nr_irqs = NR_IRQS_LEGACY, - .init_machine = emev2_add_standard_devices_dt, .dt_compat = emev2_boards_compat_dt,MACHINE_END
Signature · 1 line
1.7.10.4
PATCH 12/22 ARM: shmobile: Remove unused r8a7740 auxdata table
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Pass NULL to of_platform_populate instead of passing an empty list. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-r8a7740.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-)
arch/arm/mach-shmobile/setup-r8a7740.c +11 -5
@@ -986,16 +986,22 @@ void __init r8a7740_add_early_devices(void)#ifdef CONFIG_USE_OF -static const struct of_dev_auxdata r8a7740_auxdata_lookup[]__initconst = { - { } -}; +void __init r8a7740_add_early_devices_dt (void ) +{ +shmobile_setup_delay (800 ,1 ,3 );/* Cortex-A9 @ 800MHz */ + +early_platform_add_devices (r8a7740_early_devices, +ARRAY_SIZE (r8a7740_early_devices)); + +/* setup early console here as well */ +shmobile_setup_console (); +}void __init r8a7740_add_standard_devices_dt (void ) {platform_add_devices (r8a7740_devices_dt,ARRAY_SIZE (r8a7740_devices_dt)); -of_platform_populate (NULL , of_default_bus_match_table, - r8a7740_auxdata_lookup,NULL ); +of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL ); }void __init r8a7740_init_delay (void )
Signature · 1 line
1.7.10.4
PATCH 13/22 ARM: shmobile: Remove unused r8a7778 auxdata and callback
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Replace the SoC-specific callback init_machine() with a NULL to use the default code. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-r8a7778.c | 11 ----------- 1 file changed, 11 deletions(-)
arch/arm/mach-shmobile/setup-r8a7778.c +0 -11
@@ -457,16 +457,6 @@ void __init r8a7778_init_irq_dt(void)r8a7778_init_irq_common (); } -static const struct of_dev_auxdata r8a7778_auxdata_lookup[]__initconst = { - {}, -}; - -void __init r8a7778_add_standard_devices_dt (void ) -{ -of_platform_populate (NULL , of_default_bus_match_table, - r8a7778_auxdata_lookup,NULL ); -} -static const char *r8a7778_compat_dt[]__initdata = {"renesas,r8a7778" ,NULL ,
@@ -475,7 +465,6 @@ static const char *r8a7778_compat_dt[] __initdata = {DT_MACHINE_START (R8A7778_DT ,"Generic R8A7778 (Flattened Device Tree)" ) .init_early = r8a7778_init_delay, .init_irq = r8a7778_init_irq_dt, - .init_machine = r8a7778_add_standard_devices_dt, .init_time = shmobile_timer_init, .dt_compat = r8a7778_compat_dt, .init_late = r8a7778_init_late,
Signature · 1 line
1.7.10.4
PATCH 14/22 ARM: shmobile: Remove unused r8a7779 auxdata table
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Pass NULL to of_platform_populate instead of passing an empty list. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-r8a7779.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
arch/arm/mach-shmobile/setup-r8a7779.c +1 -6
@@ -665,10 +665,6 @@ void __init r8a7779_init_delay(void)shmobile_setup_delay (1000 ,2 ,4 );/* Cortex-A9 @ 1000MHz */ } -static const struct of_dev_auxdata r8a7779_auxdata_lookup[]__initconst = { - {}, -}; -void __init r8a7779_add_standard_devices_dt (void ) {/* clocks are setup late during boot in the case of DT */
@@ -676,8 +672,7 @@ void __init r8a7779_add_standard_devices_dt(void)platform_add_devices (r8a7779_devices_dt,ARRAY_SIZE (r8a7779_devices_dt)); -of_platform_populate (NULL , of_default_bus_match_table, - r8a7779_auxdata_lookup,NULL ); +of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL ); }static const char *r8a7779_compat_dt[]__initdata = {
Signature · 1 line
1.7.10.4
PATCH 15/22 ARM: shmobile: Remove unused sh7372 auxdata table
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Pass NULL to of_platform_populate instead of passing an empty list. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-sh7372.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
arch/arm/mach-shmobile/setup-sh7372.c +1 -6
@@ -1147,10 +1147,6 @@ void __init sh7372_add_early_devices_dt(void)shmobile_setup_console (); } -static const struct of_dev_auxdata sh7372_auxdata_lookup[]__initconst = { - { } -}; -void __init sh7372_add_standard_devices_dt (void ) {/* clocks are setup late during boot in the case of DT */
@@ -1159,8 +1155,7 @@ void __init sh7372_add_standard_devices_dt(void)platform_add_devices (sh7372_early_devices,ARRAY_SIZE (sh7372_early_devices)); -of_platform_populate (NULL , of_default_bus_match_table, - sh7372_auxdata_lookup,NULL ); +of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL ); }static const char *sh7372_boards_compat_dt[]__initdata = {
Signature · 1 line
1.7.10.4
PATCH 16/22 ARM: shmobile: Remove unused sh73a0 auxdata table
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Pass NULL to of_platform_populate instead of passing an empty list. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-sh73a0.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-)
arch/arm/mach-shmobile/setup-sh73a0.c +1 -6
@@ -944,10 +944,6 @@ void __init sh73a0_add_early_devices(void)#ifdef CONFIG_USE_OF -static const struct of_dev_auxdata sh73a0_auxdata_lookup[]__initconst = { - {}, -}; -void __init sh73a0_add_standard_devices_dt (void ) {struct platform_device_info devinfo = { .name ="cpufreq-cpu0" , .id =-1 , };
@@ -957,8 +953,7 @@ void __init sh73a0_add_standard_devices_dt(void)platform_add_devices (sh73a0_devices_dt,ARRAY_SIZE (sh73a0_devices_dt)); -of_platform_populate (NULL , of_default_bus_match_table, - sh73a0_auxdata_lookup,NULL ); +of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL );/* Instantiate cpufreq-cpu0 */ platform_device_register_full (&devinfo);
Signature · 1 line
1.7.10.4
PATCH 17/22 ARM: shmobile: Remove redundant r8a7790 callback
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Replace the SoC-specific callback init_machine() with a NULL to use the default code. This cleans up the code and reduces the number of lines.
--- arch/arm/mach-shmobile/setup-r8a7790.c | 5 ----- 1 file changed, 5 deletions(-)
arch/arm/mach-shmobile/setup-r8a7790.c +0 -5
@@ -176,10 +176,6 @@ void __init r8a7790_timer_init(void) }#ifdef CONFIG_USE_OF -void __init r8a7790_add_standard_devices_dt (void ) -{ -of_platform_populate (NULL , of_default_bus_match_table,NULL ,NULL ); -}static const char *r8a7790_boards_compat_dt[]__initdata = { "renesas,r8a7790",
@@ -187,7 +183,6 @@ static const char *r8a7790_boards_compat_dt[] __initdata = { };DT_MACHINE_START (R8A7790_DT ,"Generic R8A7790 (Flattened Device Tree)" ) - .init_machine = r8a7790_add_standard_devices_dt, .init_time = r8a7790_timer_init, .dt_compat = r8a7790_boards_compat_dt,MACHINE_END
Signature · 1 line
1.7.10.4
PATCH 18/22 ARM: shmobile: Remove unused EMEV2/KZM9D early console
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Remove EMEV2 early console code from KZM9D and instead rely on console setup during regular platform device probe time. This makes the DT code and the KZM9D board support behave the same.
--- arch/arm/mach-shmobile/board-kzm9d.c | 2 +- arch/arm/mach-shmobile/include/mach/emev2.h | 2 +- arch/arm/mach-shmobile/setup-emev2.c | 24 +++--------------------- 3 files changed, 5 insertions(+), 23 deletions(-)
arch/arm/mach-shmobile/board-kzm9d.c +1 -1
@@ -85,7 +85,7 @@ static const char *kzm9d_boards_compat_dt[] __initdata = {DT_MACHINE_START (KZM9D_DT ,"kzm9d" ) .smp = smp_ops(emev2_smp_ops), .map_io = emev2_map_io, - .init_early = emev2_add_early_devices, + .init_early = emev2_init_delay, .nr_irqs = NR_IRQS_LEGACY, .init_irq = emev2_init_irq, .init_machine = kzm9d_add_standard_devices,
arch/arm/mach-shmobile/include/mach/emev2.h +1 -1
@@ -3,7 +3,7 @@extern void emev2_map_io (void );extern void emev2_init_irq (void ); -extern void emev2_add_early_devices (void ); +extern void emev2_init_delay (void );extern void emev2_add_standard_devices (void );extern void emev2_clock_init (void );extern void emev2_set_boot_vector (unsigned long value);
arch/arm/mach-shmobile/setup-emev2.c +3 -21
@@ -375,14 +375,11 @@ static struct platform_device pmu_device = { .resource = pmu_resources, }; -static struct platform_device *emev2_early_devices[]__initdata = { +static struct platform_device *emev2_devices[]__initdata = { &uart0_device, &uart1_device, &uart2_device, &uart3_device, -}; - -static struct platform_device *emev2_late_devices[]__initdata = { &sti_device, &gio0_device, &gio1_device,
@@ -396,29 +393,14 @@ void __init emev2_add_standard_devices(void) {emev2_clock_init (); -platform_add_devices (emev2_early_devices, -ARRAY_SIZE (emev2_early_devices)); - -platform_add_devices (emev2_late_devices, -ARRAY_SIZE (emev2_late_devices)); +platform_add_devices (emev2_devices,ARRAY_SIZE (emev2_devices)); } -static void __init emev2_init_delay (void ) +void __init emev2_init_delay (void ) {shmobile_setup_delay (533 ,1 ,3 );/* Cortex-A9 @ 533MHz */ } -void __init emev2_add_early_devices (void ) -{ -emev2_init_delay (); - -early_platform_add_devices (emev2_early_devices, -ARRAY_SIZE (emev2_early_devices)); - -/* setup early console here as well */ -shmobile_setup_console (); -} -void __init emev2_init_irq (void ) {void __iomem *gic_dist_base;
Signature · 1 line
1.7.10.4
PATCH 19/22 ARM: shmobile: Make EMEV2 platform devices more compact
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Convert the EMEV2 SoC device setup code from using very verbose resources and static platform devices to the same style as more recent boards. This reduces the size of the code.
--- arch/arm/mach-shmobile/setup-emev2.c | 321 +++++++--------------------------- 1 file changed, 61 insertions(+), 260 deletions(-)
arch/arm/mach-shmobile/setup-emev2.c +61 -260
@@ -62,102 +62,40 @@ void __init emev2_map_io(void)/* UART */ static struct resource uart0_resources[] = { - [0 ] = { - .start =0xe1020000 , - .end =0xe1020037 , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =40 , - .flags =IORESOURCE_IRQ , - } -}; - -static struct platform_device uart0_device = { - .name ="serial8250-em" , - .id =0 , - .num_resources =ARRAY_SIZE (uart0_resources), - .resource = uart0_resources, +DEFINE_RES_MEM (0xe1020000 ,0x38 ), +DEFINE_RES_IRQ (40 ), };static struct resource uart1_resources[] = { - [0 ] = { - .start =0xe1030000 , - .end =0xe1030037 , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =41 , - .flags =IORESOURCE_IRQ , - } -}; - -static struct platform_device uart1_device = { - .name ="serial8250-em" , - .id =1 , - .num_resources =ARRAY_SIZE (uart1_resources), - .resource = uart1_resources, +DEFINE_RES_MEM (0xe1030000 ,0x38 ), +DEFINE_RES_IRQ (41 ), };static struct resource uart2_resources[] = { - [0 ] = { - .start =0xe1040000 , - .end =0xe1040037 , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =42 , - .flags =IORESOURCE_IRQ , - } -}; - -static struct platform_device uart2_device = { - .name ="serial8250-em" , - .id =2 , - .num_resources =ARRAY_SIZE (uart2_resources), - .resource = uart2_resources, +DEFINE_RES_MEM (0xe1040000 ,0x38 ), +DEFINE_RES_IRQ (42 ), };static struct resource uart3_resources[] = { - [0 ] = { - .start =0xe1050000 , - .end =0xe1050037 , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =43 , - .flags =IORESOURCE_IRQ , - } +DEFINE_RES_MEM (0xe1050000 ,0x38 ), +DEFINE_RES_IRQ (43 ), }; -static struct platform_device uart3_device = { - .name ="serial8250-em" , - .id =3 , - .num_resources =ARRAY_SIZE (uart3_resources), - .resource = uart3_resources, -}; +#define emev2_register_uart (idx) \ + platform_device_register_simple("serial8250-em", idx, \ + uart##idx##_resources, \ + ARRAY_SIZE(uart##idx##_resources))/* STI */ static struct resource sti_resources[] = { - [0 ] = { - .name ="STI" , - .start =0xe0180000 , - .end =0xe0180053 , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .start =157 , - .flags =IORESOURCE_IRQ , - }, -}; - -static struct platform_device sti_device = { - .name ="em_sti" , - .id =0 , - .resource = sti_resources, - .num_resources =ARRAY_SIZE (sti_resources), +DEFINE_RES_MEM (0xe0180000 ,0x54 ), +DEFINE_RES_IRQ (157 ), }; +#define emev2_register_sti () \ + platform_device_register_simple("em_sti", 0, \ + sti_resources, \ + ARRAY_SIZE(sti_resources))/* GIO */ static struct gpio_em_config gio0_config = {
@@ -167,36 +105,10 @@ static struct gpio_em_config gio0_config = { };static struct resource gio0_resources[] = { - [0 ] = { - .name ="GIO_000" , - .start =0xe0050000 , - .end =0xe005002b , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .name ="GIO_000" , - .start =0xe0050040 , - .end =0xe005005f , - .flags =IORESOURCE_MEM , - }, - [2 ] = { - .start =99 , - .flags =IORESOURCE_IRQ , - }, - [3 ] = { - .start =100 , - .flags =IORESOURCE_IRQ , - }, -}; - -static struct platform_device gio0_device = { - .name ="em_gio" , - .id =0 , - .resource = gio0_resources, - .num_resources =ARRAY_SIZE (gio0_resources), - .dev = { - .platform_data = &gio0_config, - }, +DEFINE_RES_MEM (0xe0050000 ,0x2c ), +DEFINE_RES_MEM (0xe0050040 ,0x20 ), +DEFINE_RES_IRQ (99 ), +DEFINE_RES_IRQ (100 ), };static struct gpio_em_config gio1_config = {
@@ -206,36 +118,10 @@ static struct gpio_em_config gio1_config = { };static struct resource gio1_resources[] = { - [0 ] = { - .name ="GIO_032" , - .start =0xe0050080 , - .end =0xe00500ab , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .name ="GIO_032" , - .start =0xe00500c0 , - .end =0xe00500df , - .flags =IORESOURCE_MEM , - }, - [2 ] = { - .start =101 , - .flags =IORESOURCE_IRQ , - }, - [3 ] = { - .start =102 , - .flags =IORESOURCE_IRQ , - }, -}; - -static struct platform_device gio1_device = { - .name ="em_gio" , - .id =1 , - .resource = gio1_resources, - .num_resources =ARRAY_SIZE (gio1_resources), - .dev = { - .platform_data = &gio1_config, - }, +DEFINE_RES_MEM (0xe0050080 ,0x2c ), +DEFINE_RES_MEM (0xe00500c0 ,0x20 ), +DEFINE_RES_IRQ (101 ), +DEFINE_RES_IRQ (102 ), };static struct gpio_em_config gio2_config = {
@@ -245,36 +131,10 @@ static struct gpio_em_config gio2_config = { };static struct resource gio2_resources[] = { - [0 ] = { - .name ="GIO_064" , - .start =0xe0050100 , - .end =0xe005012b , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .name ="GIO_064" , - .start =0xe0050140 , - .end =0xe005015f , - .flags =IORESOURCE_MEM , - }, - [2 ] = { - .start =103 , - .flags =IORESOURCE_IRQ , - }, - [3 ] = { - .start =104 , - .flags =IORESOURCE_IRQ , - }, -}; - -static struct platform_device gio2_device = { - .name ="em_gio" , - .id =2 , - .resource = gio2_resources, - .num_resources =ARRAY_SIZE (gio2_resources), - .dev = { - .platform_data = &gio2_config, - }, +DEFINE_RES_MEM (0xe0050100 ,0x2c ), +DEFINE_RES_MEM (0xe0050140 ,0x20 ), +DEFINE_RES_IRQ (103 ), +DEFINE_RES_IRQ (104 ), };static struct gpio_em_config gio3_config = {
@@ -284,36 +144,10 @@ static struct gpio_em_config gio3_config = { };static struct resource gio3_resources[] = { - [0 ] = { - .name ="GIO_096" , - .start =0xe0050180 , - .end =0xe00501ab , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .name ="GIO_096" , - .start =0xe00501c0 , - .end =0xe00501df , - .flags =IORESOURCE_MEM , - }, - [2 ] = { - .start =105 , - .flags =IORESOURCE_IRQ , - }, - [3 ] = { - .start =106 , - .flags =IORESOURCE_IRQ , - }, -}; - -static struct platform_device gio3_device = { - .name ="em_gio" , - .id =3 , - .resource = gio3_resources, - .num_resources =ARRAY_SIZE (gio3_resources), - .dev = { - .platform_data = &gio3_config, - }, +DEFINE_RES_MEM (0xe0050180 ,0x2c ), +DEFINE_RES_MEM (0xe00501c0 ,0x20 ), +DEFINE_RES_IRQ (105 ), +DEFINE_RES_IRQ (106 ), };static struct gpio_em_config gio4_config = {
@@ -323,77 +157,44 @@ static struct gpio_em_config gio4_config = { };static struct resource gio4_resources[] = { - [0 ] = { - .name ="GIO_128" , - .start =0xe0050200 , - .end =0xe005022b , - .flags =IORESOURCE_MEM , - }, - [1 ] = { - .name ="GIO_128" , - .start =0xe0050240 , - .end =0xe005025f , - .flags =IORESOURCE_MEM , - }, - [2 ] = { - .start =107 , - .flags =IORESOURCE_IRQ , - }, - [3 ] = { - .start =108 , - .flags =IORESOURCE_IRQ , - }, +DEFINE_RES_MEM (0xe0050200 ,0x2c ), +DEFINE_RES_MEM (0xe0050240 ,0x20 ), +DEFINE_RES_IRQ (107 ), +DEFINE_RES_IRQ (108 ), }; -static struct platform_device gio4_device = { - .name ="em_gio" , - .id =4 , - .resource = gio4_resources, - .num_resources =ARRAY_SIZE (gio4_resources), - .dev = { - .platform_data = &gio4_config, - }, -}; +#define emev2_register_gio (idx) \ + platform_device_register_resndata(&platform_bus, "em_gio", \ + idx, gio##idx##_resources, \ + ARRAY_SIZE(gio##idx##_resources), \ + &gio##idx##_config, \ + sizeof(struct gpio_em_config))static struct resource pmu_resources[] = { - [0 ] = { - .start =152 , - .end =152 , - .flags =IORESOURCE_IRQ , - }, - [1 ] = { - .start =153 , - .end =153 , - .flags =IORESOURCE_IRQ , - }, +DEFINE_RES_IRQ (152 ), +DEFINE_RES_IRQ (153 ), }; -static struct platform_device pmu_device = { - .name ="arm-pmu" , - .id =-1 , - .num_resources =ARRAY_SIZE (pmu_resources), - .resource = pmu_resources, -}; - -static struct platform_device *emev2_devices[]__initdata = { - &uart0_device, - &uart1_device, - &uart2_device, - &uart3_device, - &sti_device, - &gio0_device, - &gio1_device, - &gio2_device, - &gio3_device, - &gio4_device, - &pmu_device, -}; +#define emev2_register_pmu () \ + platform_device_register_simple("arm-pmu", -1, \ + pmu_resources, \ + ARRAY_SIZE(pmu_resources))void __init emev2_add_standard_devices (void ) {emev2_clock_init (); -platform_add_devices (emev2_devices,ARRAY_SIZE (emev2_devices)); +emev2_register_uart (0 ); +emev2_register_uart (1 ); +emev2_register_uart (2 ); +emev2_register_uart (3 ); +emev2_register_sti (); +emev2_register_gio (0 ); +emev2_register_gio (1 ); +emev2_register_gio (2 ); +emev2_register_gio (3 ); +emev2_register_gio (4 ); +emev2_register_pmu (); }void __init emev2_init_delay (void )
Signature · 1 line
1.7.10.4
PATCH 20/22 ARM: shmobile: Fix EMEV2 clock comment typo
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Update the STI timer frequency comment to 32.768 kHz to fix 37 kHz typo.
--- arch/arm/mach-shmobile/clock-emev2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-shmobile/clock-emev2.c +1 -1
@@ -221,7 +221,7 @@ void __init emev2_clock_init(void) smu_base =ioremap (EMEV2_SMU_BASE ,PAGE_SIZE );BUG_ON (!smu_base); -/* setup STI timer to run on 37.768 kHz and deassert reset */ +/* setup STI timer to run on 32.768 kHz and deassert reset */ emev2_smu_write (0 ,STI_CLKSEL );emev2_smu_write (1 ,STI_RSTCTRL );
Signature · 1 line
1.7.10.4
PATCH 21/22 ARM: shmobile: r8a7778: remove r8a7778_init_irq()
In reply to Simon HormanFrom: Kuninori Morimoto <[email protected]>
This patch removes r8a7778_init_irq(), since no-one is using it. And now, there is no reason to have r8a7778_init_irq_common(). r8a7778_init_irq_dt() includes it.
--- arch/arm/mach-shmobile/include/mach/r8a7778.h | 1 - arch/arm/mach-shmobile/setup-r8a7778.c | 37 ++++++------------------- 2 files changed, 9 insertions(+), 29 deletions(-)
arch/arm/mach-shmobile/include/mach/r8a7778.h +0 -1
@@ -33,7 +33,6 @@ extern void r8a7778_add_mmc_device(struct sh_mmcif_plat_data *info);extern void r8a7778_init_late (void );extern void r8a7778_init_delay (void ); -extern void r8a7778_init_irq (void );extern void r8a7778_init_irq_dt (void );extern void r8a7778_clock_init (void );extern void r8a7778_init_irq_extpin (int irlm);
arch/arm/mach-shmobile/setup-r8a7778.c +9 -28
@@ -408,17 +408,25 @@ void __init r8a7778_init_irq_extpin(int irlm) &irqpin_platform_data, sizeof(irqpin_platform_data)); } +void __init r8a7778_init_delay (void ) +{ +shmobile_setup_delay (800 ,1 ,3 );/* Cortex-A9 @ 800MHz */ +} + +#ifdef CONFIG_USE_OF #define INT2SMSKCR0 0x82288/* 0xfe782288 */ #define INT2SMSKCR1 0x8228c/* 0xfe78228c */ #define INT2NTSR0 0x00018/* 0xfe700018 */ #define INT2NTSR1 0x0002c/* 0xfe70002c */ -static void __init r8a7778_init_irq_common (void ) +void __init r8a7778_init_irq_dt (void ) {void __iomem *base =ioremap_nocache (0xfe700000 ,0x00100000 );BUG_ON (!base); +irqchip_init (); +/* route all interrupts to ARM */ __raw_writel (0x73ffffff , base +INT2NTSR0 );__raw_writel (0xffffffff , base +INT2NTSR1 );
@@ -430,33 +438,6 @@ static void __init r8a7778_init_irq_common(void)iounmap (base); } -void __init r8a7778_init_irq (void ) -{ -void __iomem *gic_dist_base; -void __iomem *gic_cpu_base; - - gic_dist_base =ioremap_nocache (0xfe438000 ,PAGE_SIZE ); - gic_cpu_base =ioremap_nocache (0xfe430000 ,PAGE_SIZE ); -BUG_ON (!gic_dist_base || !gic_cpu_base); - -/* use GIC to handle interrupts */ -gic_init (0 ,29 , gic_dist_base, gic_cpu_base); - -r8a7778_init_irq_common (); -} - -void __init r8a7778_init_delay (void ) -{ -shmobile_setup_delay (800 ,1 ,3 );/* Cortex-A9 @ 800MHz */ -} - -#ifdef CONFIG_USE_OF -void __init r8a7778_init_irq_dt (void ) -{ -irqchip_init (); -r8a7778_init_irq_common (); -} -static const char *r8a7778_compat_dt[]__initdata = {"renesas,r8a7778" ,NULL ,
Signature · 1 line
1.7.10.4
PATCH 22/22 ARM: shmobile: Remove unused mach/dma.h
In reply to Simon HormanFrom: Magnus Damm <[email protected]>
Remove mach-shmobile mach/dma.h since it only
seems to be used on non-mach-shmobile platforms.
--- arch/arm/mach-shmobile/include/mach/dma.h | 1 - 1 file changed, 1 deletion(-) delete mode 100644 arch/arm/mach-shmobile/include/mach/dma.h
arch/arm/mach-shmobile/include/mach/dma.h deleted +0 -1
@@ -1 +0,0 @@ -/* empty */
Signature · 1 line
1.7.10.4
cover Renesas ARM based SoC cleanups for v3.12
In reply to Simon HormanQuoted 11 lines · Simon Horman
Hi Olof, Hi Arnd,
please consider the following cleanups for v3.12.
The following changes since commit
ad81f0545ef01ea651886dddac4bef6cec930092:Linux 3.11-rc1 (2013-07-14 15:18:27 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.gittags/renesas-cleanup-for-v3.12
Pulled, thanks -- sorry for the delay.
-Olof