This patchset will:

- Move all remaining headers out of arch/arm/plat-nomadik/include/plat
   out to e.g. include/linux/platform_data
 - Delete arch/arm/plat-nomadik
 - Convert Nomadik and Ux500 to SPARSE_IRQ
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.10 (GNU/Linux)
 
 iQIcBAABAgAGBQJQl4K6AAoJEEEQszewGV1zww0P/3YnFr91bhuwHsqhz3+W31Mi
 RFXk74d7G7vyNZ8817zl0YcR22tByaIldnoj0sasqttqOChE0WbJBl86aDpoeKYo
 dbZL3d8ZndE0mXomyV6nd0d5H7Q2/NBlQwCTEr4KvGlcSHIQ4MEW8aZx64m63ReP
 YytAPNU36GrUBVPgtDNj8QwCTW84HEvwTte/W5t8iUPt40aeWL4BrYg19sIFtz9r
 FhaXUkZBZSfsXg7ZDtkAd2mMpqJusIX0UQi5q0nyhClnz5+PGKHlN1/rMo56diQC
 ZpIo1Dp4RhUj2MYVtvNrMNZE5dZxdrPbpswd/ExEQdzFxinUiopzz4VoMLjwbHME
 c324I23kke/bDrOSQQvwUqRQ0p1xm2NFipPzs7LkqggxnLXBhDKkQoih6GeEmo4/
 6Dq7XFN7DX6PwaambLEsvwolm52mvxN5N9R8bc3VBt9Z07Xt+nM994E55PcwHsD1
 KaO+8R3efhUCTFq/r/on+QiEz6++kFZqLDeFlbsrPsUZDn0kZ0VPsKpEXKFwEJWk
 bTk+vDo5OefSZ1d421Rpu73L6WkzhPQC9sIGSdDrw8uEOlgEQggVnI8VkATkz2Em
 gn2aC1tCwtyhmTbzNhL8VLB4h1q7lvRX2mR8Z9Q9F0bL9IbyWGJ+hsuDjNZstjk4
 FFXyRSClx3stmuSuPcGT
 =LEWy
 -----END PGP SIGNATURE-----

Merge tag 'kill-plat-sparse-irq' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl into next/multiplatform

From Linus Walleij:

This patchset will:
- Move all remaining headers out of arch/arm/plat-nomadik/include/plat
  out to e.g. include/linux/platform_data
- Delete arch/arm/plat-nomadik
- Convert Nomadik and Ux500 to SPARSE_IRQ

* tag 'kill-plat-sparse-irq' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
  ARM: plat-nomadik: convert platforms to SPARSE_IRQ
  mfd/db8500-prcmu: use the irq_domain_add_simple()
  mfd/ab8500-core: use irq_domain_add_simple()
  ARM: plat-nomadik: move MTU, kill plat-nomadik
  ARM: plat-nomadik: move DMA40 header to <linux/platform_data>
  ARM: plat-nomadik: use DIV_ROUND_CLOSEST()
  ARM: plat-nomadik: pass IRQ to timer driver
  clk/ux500: explicitly include register header
  pinctrl/nomadik: merge old pincfg header
  pinctrl/nomadik: move the platform data header
  ARM: plat-nomadik: move NMK_GPIO_PER_CHIP into gpio-nomadik.h
  ARM: plat-nomadik: Introduce new DB8540 GPIO registers
This commit is contained in:
Olof Johansson 2012-11-06 07:47:09 -08:00
commit f75ed2d395
42 changed files with 185 additions and 226 deletions

View File

@ -885,6 +885,7 @@ config ARCH_U8500
select GENERIC_CLOCKEVENTS select GENERIC_CLOCKEVENTS
select HAVE_SMP select HAVE_SMP
select MIGHT_HAVE_CACHE_L2X0 select MIGHT_HAVE_CACHE_L2X0
select SPARSE_IRQ
help help
Support for ST-Ericsson's Ux500 architecture Support for ST-Ericsson's Ux500 architecture
@ -899,6 +900,7 @@ config ARCH_NOMADIK
select MIGHT_HAVE_CACHE_L2X0 select MIGHT_HAVE_CACHE_L2X0
select PINCTRL select PINCTRL
select PINCTRL_STN8815 select PINCTRL_STN8815
select SPARSE_IRQ
help help
Support for the Nomadik platform by ST-Ericsson Support for the Nomadik platform by ST-Ericsson
@ -1067,7 +1069,6 @@ source "arch/arm/mach-mxs/Kconfig"
source "arch/arm/mach-netx/Kconfig" source "arch/arm/mach-netx/Kconfig"
source "arch/arm/mach-nomadik/Kconfig" source "arch/arm/mach-nomadik/Kconfig"
source "arch/arm/plat-nomadik/Kconfig"
source "arch/arm/plat-omap/Kconfig" source "arch/arm/plat-omap/Kconfig"

View File

@ -201,7 +201,6 @@ plat-$(CONFIG_ARCH_OMAP) += omap
plat-$(CONFIG_ARCH_S3C64XX) += samsung plat-$(CONFIG_ARCH_S3C64XX) += samsung
plat-$(CONFIG_ARCH_ZYNQ) += versatile plat-$(CONFIG_ARCH_ZYNQ) += versatile
plat-$(CONFIG_PLAT_IOP) += iop plat-$(CONFIG_PLAT_IOP) += iop
plat-$(CONFIG_PLAT_NOMADIK) += nomadik
plat-$(CONFIG_PLAT_ORION) += orion plat-$(CONFIG_PLAT_ORION) += orion
plat-$(CONFIG_PLAT_PXA) += pxa plat-$(CONFIG_PLAT_PXA) += pxa
plat-$(CONFIG_PLAT_S3C24XX) += s3c24xx samsung plat-$(CONFIG_PLAT_S3C24XX) += s3c24xx samsung

View File

@ -4,7 +4,7 @@ menu "Nomadik boards"
config MACH_NOMADIK_8815NHK config MACH_NOMADIK_8815NHK
bool "ST 8815 Nomadik Hardware Kit (evaluation board)" bool "ST 8815 Nomadik Hardware Kit (evaluation board)"
select HAS_MTU select CLKSRC_NOMADIK_MTU
select NOMADIK_8815 select NOMADIK_8815
endmenu endmenu

View File

@ -24,20 +24,17 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/pinctrl/machine.h> #include <linux/pinctrl/machine.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>
#include <linux/platform_data/mtd-nomadik-nand.h>
#include <asm/hardware/vic.h> #include <asm/hardware/vic.h>
#include <asm/sizes.h> #include <asm/sizes.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/mach/irq.h>
#include <asm/mach/flash.h> #include <asm/mach/flash.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <plat/gpio-nomadik.h>
#include <plat/mtu.h>
#include <plat/pincfg.h>
#include <linux/platform_data/mtd-nomadik-nand.h>
#include <mach/fsmc.h> #include <mach/fsmc.h>
#include <mach/irqs.h>
#include "cpu-8815.h" #include "cpu-8815.h"
@ -261,7 +258,7 @@ static void __init nomadik_timer_init(void)
src_cr |= SRC_CR_INIT_VAL; src_cr |= SRC_CR_INIT_VAL;
writel(src_cr, io_p2v(NOMADIK_SRC_BASE)); writel(src_cr, io_p2v(NOMADIK_SRC_BASE));
nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE)); nmdk_timer_init(io_p2v(NOMADIK_MTU0_BASE), IRQ_MTU0);
} }
static struct sys_timer nomadik_timer = { static struct sys_timer nomadik_timer = {

View File

@ -26,8 +26,8 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/platform_data/clk-nomadik.h> #include <linux/platform_data/clk-nomadik.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <plat/gpio-nomadik.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/irqs.h> #include <mach/irqs.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>

View File

@ -4,8 +4,7 @@
#include <linux/i2c-algo-bit.h> #include <linux/i2c-algo-bit.h>
#include <linux/i2c-gpio.h> #include <linux/i2c-gpio.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <plat/gpio-nomadik.h> #include <linux/platform_data/pinctrl-nomadik.h>
#include <plat/pincfg.h>
/* /*
* There are two busses in the 8815NHK. * There are two busses in the 8815NHK.

View File

@ -72,7 +72,7 @@
#define NOMADIK_NR_GPIO 128 /* last 4 not wired to pins */ #define NOMADIK_NR_GPIO 128 /* last 4 not wired to pins */
#define NOMADIK_GPIO_TO_IRQ(gpio) ((gpio) + NOMADIK_GPIO_OFFSET) #define NOMADIK_GPIO_TO_IRQ(gpio) ((gpio) + NOMADIK_GPIO_OFFSET)
#define NOMADIK_IRQ_TO_GPIO(irq) ((irq) - NOMADIK_GPIO_OFFSET) #define NOMADIK_IRQ_TO_GPIO(irq) ((irq) - NOMADIK_GPIO_OFFSET)
#define NR_IRQS NOMADIK_GPIO_TO_IRQ(NOMADIK_NR_GPIO) #define NOMADIK_NR_IRQS NOMADIK_GPIO_TO_IRQ(NOMADIK_NR_GPIO)
/* Following two are used by entry_macro.S, to access our dual-vic */ /* Following two are used by entry_macro.S, to access our dual-vic */
#define VIC_REG_IRQSR0 0 #define VIC_REG_IRQSR0 0

View File

@ -7,8 +7,8 @@ config UX500_SOC_COMMON
select ARM_ERRATA_764369 if SMP select ARM_ERRATA_764369 if SMP
select ARM_GIC select ARM_GIC
select CACHE_L2X0 select CACHE_L2X0
select CLKSRC_NOMADIK_MTU
select COMMON_CLK select COMMON_CLK
select HAS_MTU
select PINCTRL select PINCTRL
select PINCTRL_NOMADIK select PINCTRL_NOMADIK
select PL310_ERRATA_753970 if CACHE_PL310 select PL310_ERRATA_753970 if CACHE_PL310

View File

@ -7,10 +7,8 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <plat/gpio-nomadik.h> #include <linux/platform_data/dma-ste-dma40.h>
#include <plat/pincfg.h>
#include <plat/ste_dma40.h>
#include <mach/devices.h> #include <mach/devices.h>
#include <mach/hardware.h> #include <mach/hardware.h>

View File

@ -9,10 +9,9 @@
#include <linux/bug.h> #include <linux/bug.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/pinctrl/machine.h> #include <linux/pinctrl/machine.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <plat/pincfg.h>
#include <plat/gpio-nomadik.h>
#include <mach/hardware.h> #include <mach/hardware.h>

View File

@ -11,9 +11,9 @@
#include <linux/amba/mmci.h> #include <linux/amba/mmci.h>
#include <linux/mmc/host.h> #include <linux/mmc/host.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <plat/ste_dma40.h>
#include <mach/devices.h> #include <mach/devices.h>
#include <mach/hardware.h> #include <mach/hardware.h>

View File

@ -1,4 +1,3 @@
/* /*
* Copyright (C) 2008-2009 ST-Ericsson * Copyright (C) 2008-2009 ST-Ericsson
* *
@ -37,14 +36,13 @@
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/leds.h> #include <linux/leds.h>
#include <linux/pinctrl/consumer.h> #include <linux/pinctrl/consumer.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/arch.h> #include <asm/mach/arch.h>
#include <asm/hardware/gic.h> #include <asm/hardware/gic.h>
#include <plat/ste_dma40.h>
#include <plat/gpio-nomadik.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/setup.h> #include <mach/setup.h>
#include <mach/devices.h> #include <mach/devices.h>

View File

@ -17,15 +17,16 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/mfd/abx500/ab8500.h> #include <linux/mfd/abx500/ab8500.h>
#include <linux/platform_data/usb-musb-ux500.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <asm/pmu.h> #include <asm/pmu.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <plat/gpio-nomadik.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/setup.h> #include <mach/setup.h>
#include <mach/devices.h> #include <mach/devices.h>
#include <linux/platform_data/usb-musb-ux500.h>
#include <mach/db8500-regs.h> #include <mach/db8500-regs.h>
#include <mach/irqs.h>
#include "devices-db8500.h" #include "devices-db8500.h"
#include "ste-dma40-db8500.h" #include "ste-dma40-db8500.h"

View File

@ -11,10 +11,10 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/platform_data/pinctrl-nomadik.h>
#include <plat/gpio-nomadik.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/irqs.h>
#include "devices-common.h" #include "devices-common.h"

View File

@ -12,11 +12,11 @@
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/amba/bus.h> #include <linux/amba/bus.h>
#include <linux/amba/pl022.h> #include <linux/amba/pl022.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <plat/ste_dma40.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/setup.h> #include <mach/setup.h>
#include <mach/irqs.h>
#include "ste-dma40-db8500.h" #include "ste-dma40-db8500.h"

View File

@ -8,6 +8,7 @@
#ifndef __DEVICES_DB8500_H #ifndef __DEVICES_DB8500_H
#define __DEVICES_DB8500_H #define __DEVICES_DB8500_H
#include <mach/irqs.h>
#include "devices-common.h" #include "devices-common.h"
struct ske_keypad_platform_data; struct ske_keypad_platform_data;

View File

@ -46,6 +46,6 @@
#include <mach/irqs-board-mop500.h> #include <mach/irqs-board-mop500.h>
#endif #endif
#define NR_IRQS IRQ_BOARD_END #define UX500_NR_IRQS IRQ_BOARD_END
#endif /* ASM_ARCH_IRQS_H */ #endif /* ASM_ARCH_IRQS_H */

View File

@ -8,7 +8,7 @@
#ifndef __MSP_H #ifndef __MSP_H
#define __MSP_H #define __MSP_H
#include <plat/ste_dma40.h> #include <linux/platform_data/dma-ste-dma40.h>
enum msp_i2s_id { enum msp_i2s_id {
MSP_I2S_0 = 0, MSP_I2S_0 = 0,

View File

@ -9,11 +9,10 @@
#include <linux/clksrc-dbx500-prcmu.h> #include <linux/clksrc-dbx500-prcmu.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>
#include <asm/smp_twd.h> #include <asm/smp_twd.h>
#include <plat/mtu.h>
#include <mach/setup.h> #include <mach/setup.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <mach/irqs.h> #include <mach/irqs.h>
@ -96,7 +95,7 @@ dt_fail:
* *
*/ */
nmdk_timer_init(mtu_timer_base); nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
clksrc_dbx500_prcmu_init(prcmu_timer_base); clksrc_dbx500_prcmu_init(prcmu_timer_base);
ux500_twd_init(); ux500_twd_init();
} }

View File

@ -7,10 +7,10 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/usb/musb.h> #include <linux/usb/musb.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <plat/ste_dma40.h>
#include <mach/hardware.h>
#include <linux/platform_data/usb-musb-ux500.h> #include <linux/platform_data/usb-musb-ux500.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <mach/hardware.h>
#define MUSB_DMA40_RX_CH { \ #define MUSB_DMA40_RX_CH { \
.mode = STEDMA40_MODE_LOGICAL, \ .mode = STEDMA40_MODE_LOGICAL, \

View File

@ -1,29 +0,0 @@
# We keep common IP's here for Nomadik and other similar
# familiy of processors from ST-Ericsson. At the moment we have
# just MTU, others to follow soon.
config PLAT_NOMADIK
bool
depends on ARCH_NOMADIK || ARCH_U8500
default y
select CLKSRC_MMIO
help
Common platform code for Nomadik and other ST-Ericsson
platforms.
if PLAT_NOMADIK
config HAS_MTU
bool
help
Support for Multi Timer Unit. MTU provides access
to multiple interrupt generating programmable
32-bit free running decrementing counters.
config NOMADIK_MTU_SCHED_CLOCK
bool
depends on HAS_MTU
help
Use the Multi Timer Unit as the sched_clock.
endif

View File

@ -1,5 +0,0 @@
# arch/arm/plat-nomadik/Makefile
# Copyright 2009 ST-Ericsson
# Licensed under GPLv2
obj-$(CONFIG_HAS_MTU) += timer.o

View File

@ -1,102 +0,0 @@
/*
* Structures and registers for GPIO access in the Nomadik SoC
*
* Copyright (C) 2008 STMicroelectronics
* Author: Prafulla WADASKAR <prafulla.wadaskar@st.com>
* Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#ifndef __PLAT_NOMADIK_GPIO
#define __PLAT_NOMADIK_GPIO
/*
* "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving
* the "gpio" namespace for generic and cross-machine functions
*/
/* Register in the logic block */
#define NMK_GPIO_DAT 0x00
#define NMK_GPIO_DATS 0x04
#define NMK_GPIO_DATC 0x08
#define NMK_GPIO_PDIS 0x0c
#define NMK_GPIO_DIR 0x10
#define NMK_GPIO_DIRS 0x14
#define NMK_GPIO_DIRC 0x18
#define NMK_GPIO_SLPC 0x1c
#define NMK_GPIO_AFSLA 0x20
#define NMK_GPIO_AFSLB 0x24
#define NMK_GPIO_LOWEMI 0x28
#define NMK_GPIO_RIMSC 0x40
#define NMK_GPIO_FIMSC 0x44
#define NMK_GPIO_IS 0x48
#define NMK_GPIO_IC 0x4c
#define NMK_GPIO_RWIMSC 0x50
#define NMK_GPIO_FWIMSC 0x54
#define NMK_GPIO_WKS 0x58
/* Alternate functions: function C is set in hw by setting both A and B */
#define NMK_GPIO_ALT_GPIO 0
#define NMK_GPIO_ALT_A 1
#define NMK_GPIO_ALT_B 2
#define NMK_GPIO_ALT_C (NMK_GPIO_ALT_A | NMK_GPIO_ALT_B)
#define NMK_GPIO_ALT_CX_SHIFT 2
#define NMK_GPIO_ALT_C1 ((1<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C2 ((2<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C3 ((3<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C4 ((4<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
/* Pull up/down values */
enum nmk_gpio_pull {
NMK_GPIO_PULL_NONE,
NMK_GPIO_PULL_UP,
NMK_GPIO_PULL_DOWN,
};
/* Sleep mode */
enum nmk_gpio_slpm {
NMK_GPIO_SLPM_INPUT,
NMK_GPIO_SLPM_WAKEUP_ENABLE = NMK_GPIO_SLPM_INPUT,
NMK_GPIO_SLPM_NOCHANGE,
NMK_GPIO_SLPM_WAKEUP_DISABLE = NMK_GPIO_SLPM_NOCHANGE,
};
extern int nmk_gpio_set_slpm(int gpio, enum nmk_gpio_slpm mode);
extern int nmk_gpio_set_pull(int gpio, enum nmk_gpio_pull pull);
#ifdef CONFIG_PINCTRL_NOMADIK
extern int nmk_gpio_set_mode(int gpio, int gpio_mode);
#else
static inline int nmk_gpio_set_mode(int gpio, int gpio_mode)
{
return -ENODEV;
}
#endif
extern int nmk_gpio_get_mode(int gpio);
extern void nmk_gpio_wakeups_suspend(void);
extern void nmk_gpio_wakeups_resume(void);
extern void nmk_gpio_clocks_enable(void);
extern void nmk_gpio_clocks_disable(void);
extern void nmk_gpio_read_pull(int gpio_bank, u32 *pull_up);
/*
* Platform data to register a block: only the initial gpio/irq number.
*/
struct nmk_gpio_platform_data {
char *name;
int first_gpio;
int first_irq;
int num_gpio;
u32 (*get_secondary_status)(unsigned int bank);
void (*set_ioforce)(bool enable);
bool supports_sleepmode;
};
#endif /* __PLAT_NOMADIK_GPIO */

View File

@ -216,7 +216,7 @@ config HW_RANDOM_MXC_RNGA
config HW_RANDOM_NOMADIK config HW_RANDOM_NOMADIK
tristate "ST-Ericsson Nomadik Random Number Generator support" tristate "ST-Ericsson Nomadik Random Number Generator support"
depends on HW_RANDOM && PLAT_NOMADIK depends on HW_RANDOM && ARCH_NOMADIK
---help--- ---help---
This driver provides kernel-side support for the Random Number This driver provides kernel-side support for the Random Number
Generator hardware found on ST-Ericsson SoCs (8815 and 8500). Generator hardware found on ST-Ericsson SoCs (8815 and 8500).

View File

@ -12,7 +12,7 @@
#include <linux/clk-provider.h> #include <linux/clk-provider.h>
#include <linux/mfd/dbx500-prcmu.h> #include <linux/mfd/dbx500-prcmu.h>
#include <linux/platform_data/clk-ux500.h> #include <linux/platform_data/clk-ux500.h>
#include <mach/db8500-regs.h>
#include "clk.h" #include "clk.h"
void u8500_clk_init(void) void u8500_clk_init(void)

View File

@ -22,6 +22,21 @@ config DW_APB_TIMER_OF
config ARMADA_370_XP_TIMER config ARMADA_370_XP_TIMER
bool bool
config CLKSRC_NOMADIK_MTU
bool
depends on (ARCH_NOMADIK || ARCH_U8500)
select CLKSRC_MMIO
help
Support for Multi Timer Unit. MTU provides access
to multiple interrupt generating programmable
32-bit free running decrementing counters.
config CLKSRC_NOMADIK_MTU_SCHED_CLOCK
bool
depends on CLKSRC_NOMADIK_MTU
help
Use the Multi Timer Unit as the sched_clock.
config CLKSRC_DBX500_PRCMU config CLKSRC_DBX500_PRCMU
bool "Clocksource PRCMU Timer" bool "Clocksource PRCMU Timer"
depends on UX500_SOC_DB8500 depends on UX500_SOC_DB8500
@ -31,7 +46,7 @@ config CLKSRC_DBX500_PRCMU
config CLKSRC_DBX500_PRCMU_SCHED_CLOCK config CLKSRC_DBX500_PRCMU_SCHED_CLOCK
bool "Clocksource PRCMU Timer sched_clock" bool "Clocksource PRCMU Timer sched_clock"
depends on (CLKSRC_DBX500_PRCMU && !NOMADIK_MTU_SCHED_CLOCK) depends on (CLKSRC_DBX500_PRCMU && !CLKSRC_NOMADIK_MTU_SCHED_CLOCK)
default y default y
help help
Use the always on PRCMU Timer as sched_clock Use the always on PRCMU Timer as sched_clock

View File

@ -11,6 +11,7 @@ obj-$(CONFIG_CLKBLD_I8253) += i8253.o
obj-$(CONFIG_CLKSRC_MMIO) += mmio.o obj-$(CONFIG_CLKSRC_MMIO) += mmio.o
obj-$(CONFIG_DW_APB_TIMER) += dw_apb_timer.o obj-$(CONFIG_DW_APB_TIMER) += dw_apb_timer.o
obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o obj-$(CONFIG_DW_APB_TIMER_OF) += dw_apb_timer_of.o
obj-$(CONFIG_CLKSRC_NOMADIK_MTU) += nomadik-mtu.o
obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o obj-$(CONFIG_CLKSRC_DBX500_PRCMU) += clksrc-dbx500-prcmu.o
obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o obj-$(CONFIG_ARMADA_370_XP_TIMER) += time-armada-370-xp.o
obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o obj-$(CONFIG_ARCH_BCM2835) += bcm2835_timer.o

View File

@ -1,6 +1,4 @@
/* /*
* linux/arch/arm/plat-nomadik/timer.c
*
* Copyright (C) 2008 STMicroelectronics * Copyright (C) 2008 STMicroelectronics
* Copyright (C) 2010 Alessandro Rubini * Copyright (C) 2010 Alessandro Rubini
* Copyright (C) 2010 Linus Walleij for ST-Ericsson * Copyright (C) 2010 Linus Walleij for ST-Ericsson
@ -14,9 +12,11 @@
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/clockchips.h> #include <linux/clockchips.h>
#include <linux/clocksource.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/jiffies.h> #include <linux/jiffies.h>
#include <linux/err.h> #include <linux/err.h>
#include <linux/platform_data/clocksource-nomadik-mtu.h>
#include <asm/mach/time.h> #include <asm/mach/time.h>
#include <asm/sched_clock.h> #include <asm/sched_clock.h>
@ -174,7 +174,7 @@ void nmdk_clksrc_reset(void)
mtu_base + MTU_CR(0)); mtu_base + MTU_CR(0));
} }
void __init nmdk_timer_init(void __iomem *base) void __init nmdk_timer_init(void __iomem *base, int irq)
{ {
unsigned long rate; unsigned long rate;
struct clk *clk0; struct clk *clk0;
@ -201,7 +201,8 @@ void __init nmdk_timer_init(void __iomem *base)
clk_prescale = MTU_CRn_PRESCALE_1; clk_prescale = MTU_CRn_PRESCALE_1;
} }
nmdk_cycle = (rate + HZ/2) / HZ; /* Cycles for periodic mode */
nmdk_cycle = DIV_ROUND_CLOSEST(rate, HZ);
/* Timer 0 is the free running clocksource */ /* Timer 0 is the free running clocksource */
@ -217,7 +218,7 @@ void __init nmdk_timer_init(void __iomem *base)
#endif #endif
/* Timer 1 is used for events, register irq and clockevents */ /* Timer 1 is used for events, register irq and clockevents */
setup_irq(IRQ_MTU0, &nmdk_timer_irq); setup_irq(irq, &nmdk_timer_irq);
nmdk_clkevt.cpumask = cpumask_of(0); nmdk_clkevt.cpumask = cpumask_of(0);
clockevents_config_and_register(&nmdk_clkevt, rate, 2, 0xffffffffU); clockevents_config_and_register(&nmdk_clkevt, rate, 2, 0xffffffffU);
} }

View File

@ -23,6 +23,7 @@
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/semaphore.h> #include <linux/semaphore.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <crypto/aes.h> #include <crypto/aes.h>
#include <crypto/algapi.h> #include <crypto/algapi.h>
@ -30,8 +31,6 @@
#include <crypto/des.h> #include <crypto/des.h>
#include <crypto/scatterwalk.h> #include <crypto/scatterwalk.h>
#include <plat/ste_dma40.h>
#include <linux/platform_data/crypto-ux500.h> #include <linux/platform_data/crypto-ux500.h>
#include <mach/hardware.h> #include <mach/hardware.h>

View File

@ -19,8 +19,7 @@
#include <linux/err.h> #include <linux/err.h>
#include <linux/amba/bus.h> #include <linux/amba/bus.h>
#include <linux/regulator/consumer.h> #include <linux/regulator/consumer.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <plat/ste_dma40.h>
#include "dmaengine.h" #include "dmaengine.h"
#include "ste_dma40_ll.h" #include "ste_dma40_ll.h"

View File

@ -6,7 +6,7 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <plat/ste_dma40.h> #include <linux/platform_data/dma-ste-dma40.h>
#include "ste_dma40_ll.h" #include "ste_dma40_ll.h"

View File

@ -409,7 +409,7 @@ config KEYBOARD_NEWTON
config KEYBOARD_NOMADIK config KEYBOARD_NOMADIK
tristate "ST-Ericsson Nomadik SKE keyboard" tristate "ST-Ericsson Nomadik SKE keyboard"
depends on PLAT_NOMADIK depends on (ARCH_NOMADIK || ARCH_U8500)
select INPUT_MATRIXKMAP select INPUT_MATRIXKMAP
help help
Say Y here if you want to use a keypad provided on the SKE controller Say Y here if you want to use a keypad provided on the SKE controller

View File

@ -565,15 +565,10 @@ static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np)
else else
num_irqs = AB8500_NR_IRQS; num_irqs = AB8500_NR_IRQS;
if (ab8500->irq_base) { /* If ->irq_base is zero this will give a linear mapping */
ab8500->domain = irq_domain_add_legacy( ab8500->domain = irq_domain_add_simple(NULL,
NULL, num_irqs, ab8500->irq_base, num_irqs, ab8500->irq_base,
0, &ab8500_irq_ops, ab8500); &ab8500_irq_ops, ab8500);
}
else {
ab8500->domain = irq_domain_add_linear(
np, num_irqs, &ab8500_irq_ops, ab8500);
}
if (!ab8500->domain) { if (!ab8500->domain) {
dev_err(ab8500->dev, "Failed to create irqdomain\n"); dev_err(ab8500->dev, "Failed to create irqdomain\n");

View File

@ -2697,9 +2697,15 @@ static struct irq_domain_ops db8500_irq_ops = {
static int db8500_irq_init(struct device_node *np) static int db8500_irq_init(struct device_node *np)
{ {
db8500_irq_domain = irq_domain_add_legacy( int irq_base = -1;
np, NUM_PRCMU_WAKEUPS, IRQ_PRCMU_BASE,
0, &db8500_irq_ops, NULL); /* In the device tree case, just take some IRQs */
if (!np)
irq_base = IRQ_PRCMU_BASE;
db8500_irq_domain = irq_domain_add_simple(
np, NUM_PRCMU_WAKEUPS, irq_base,
&db8500_irq_ops, NULL);
if (!db8500_irq_domain) { if (!db8500_irq_domain) {
pr_err("Failed to create irqdomain\n"); pr_err("Failed to create irqdomain\n");

View File

@ -559,7 +559,7 @@ config MTD_NAND_JZ4740
config MTD_NAND_FSMC config MTD_NAND_FSMC
tristate "Support for NAND on ST Micros FSMC" tristate "Support for NAND on ST Micros FSMC"
depends on PLAT_SPEAR || PLAT_NOMADIK || MACH_U300 depends on PLAT_SPEAR || ARCH_NOMADIK || ARCH_U8500 || MACH_U300
help help
Enables support for NAND Flash chips on the ST Microelectronics Enables support for NAND Flash chips on the ST Microelectronics
Flexible Static Memory Controller (FSMC) Flexible Static Memory Controller (FSMC)

View File

@ -44,12 +44,9 @@ static inline u32 prcmu_read(unsigned int reg) {
static inline void prcmu_write(unsigned int reg, u32 value) {} static inline void prcmu_write(unsigned int reg, u32 value) {}
static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {} static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {}
#endif #endif
#include <linux/platform_data/pinctrl-nomadik.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <mach/irqs.h>
#include <plat/pincfg.h>
#include <plat/gpio-nomadik.h>
#include "pinctrl-nomadik.h" #include "pinctrl-nomadik.h"
/* /*
@ -60,8 +57,6 @@ static inline void prcmu_write_masked(unsigned int reg, u32 mask, u32 value) {}
* Symbols in this file are called "nmk_gpio" for "nomadik gpio" * Symbols in this file are called "nmk_gpio" for "nomadik gpio"
*/ */
#define NMK_GPIO_PER_CHIP 32
struct nmk_gpio_chip { struct nmk_gpio_chip {
struct gpio_chip chip; struct gpio_chip chip;
struct irq_domain *domain; struct irq_domain *domain;
@ -536,7 +531,7 @@ static int __nmk_config_pins(pin_cfg_t *cfgs, int num, bool sleep)
* and its sleep mode based on the specified configuration. The @cfg is * and its sleep mode based on the specified configuration. The @cfg is
* usually one of the SoC specific macros defined in mach/<soc>-pins.h. These * usually one of the SoC specific macros defined in mach/<soc>-pins.h. These
* are constructed using, and can be further enhanced with, the macros in * are constructed using, and can be further enhanced with, the macros in
* plat/pincfg.h. * <linux/platform_data/pinctrl-nomadik.h>
* *
* If a pin's mode is set to GPIO, it is configured as an input to avoid * If a pin's mode is set to GPIO, it is configured as an input to avoid
* side-effects. The gpio can be manipulated later using standard GPIO API * side-effects. The gpio can be manipulated later using standard GPIO API

View File

@ -1,7 +1,7 @@
#ifndef PINCTRL_PINCTRL_NOMADIK_H #ifndef PINCTRL_PINCTRL_NOMADIK_H
#define PINCTRL_PINCTRL_NOMADIK_H #define PINCTRL_PINCTRL_NOMADIK_H
#include <plat/gpio-nomadik.h> #include <linux/platform_data/pinctrl-nomadik.h>
/* Package definitions */ /* Package definitions */
#define PINCTRL_NMK_STN8815 0 #define PINCTRL_NMK_STN8815 0

View File

@ -1,7 +1,7 @@
#ifndef __PLAT_MTU_H #ifndef __PLAT_MTU_H
#define __PLAT_MTU_H #define __PLAT_MTU_H
void nmdk_timer_init(void __iomem *base); void nmdk_timer_init(void __iomem *base, int irq);
void nmdk_clkevt_reset(void); void nmdk_clkevt_reset(void);
void nmdk_clksrc_reset(void); void nmdk_clksrc_reset(void);

View File

@ -7,7 +7,7 @@
#ifndef _CRYPTO_UX500_H #ifndef _CRYPTO_UX500_H
#define _CRYPTO_UX500_H #define _CRYPTO_UX500_H
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <plat/ste_dma40.h> #include <linux/platform_data/dma-ste-dma40.h>
struct hash_platform_data { struct hash_platform_data {
void *mem_to_engine; void *mem_to_engine;

View File

@ -1,16 +1,17 @@
/* /*
* Copyright (C) ST-Ericsson SA 2010 * Structures and registers for GPIO access in the Nomadik SoC
* *
* License terms: GNU General Public License, version 2 * Copyright (C) 2008 STMicroelectronics
* Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson * Author: Prafulla WADASKAR <prafulla.wadaskar@st.com>
* Copyright (C) 2009 Alessandro Rubini <rubini@unipv.it>
* *
* Based on arch/arm/mach-pxa/include/mach/mfp.h: * This program is free software; you can redistribute it and/or modify
* Copyright (C) 2007 Marvell International Ltd. * it under the terms of the GNU General Public License version 2 as
* eric miao <eric.miao@marvell.com> * published by the Free Software Foundation.
*/ */
#ifndef __PLAT_PINCFG_H #ifndef __PLAT_NOMADIK_GPIO
#define __PLAT_PINCFG_H #define __PLAT_NOMADIK_GPIO
/* /*
* pin configurations are represented by 32-bit integers: * pin configurations are represented by 32-bit integers:
@ -166,8 +167,100 @@ typedef unsigned long pin_cfg_t;
(PIN_CFG_DEFAULT |\ (PIN_CFG_DEFAULT |\
(PIN_NUM(num) | PIN_##alt | PIN_OUTPUT_##val)) (PIN_NUM(num) | PIN_##alt | PIN_OUTPUT_##val))
/*
* "nmk_gpio" and "NMK_GPIO" stand for "Nomadik GPIO", leaving
* the "gpio" namespace for generic and cross-machine functions
*/
#define GPIO_BLOCK_SHIFT 5
#define NMK_GPIO_PER_CHIP (1 << GPIO_BLOCK_SHIFT)
/* Register in the logic block */
#define NMK_GPIO_DAT 0x00
#define NMK_GPIO_DATS 0x04
#define NMK_GPIO_DATC 0x08
#define NMK_GPIO_PDIS 0x0c
#define NMK_GPIO_DIR 0x10
#define NMK_GPIO_DIRS 0x14
#define NMK_GPIO_DIRC 0x18
#define NMK_GPIO_SLPC 0x1c
#define NMK_GPIO_AFSLA 0x20
#define NMK_GPIO_AFSLB 0x24
#define NMK_GPIO_LOWEMI 0x28
#define NMK_GPIO_RIMSC 0x40
#define NMK_GPIO_FIMSC 0x44
#define NMK_GPIO_IS 0x48
#define NMK_GPIO_IC 0x4c
#define NMK_GPIO_RWIMSC 0x50
#define NMK_GPIO_FWIMSC 0x54
#define NMK_GPIO_WKS 0x58
/* These appear in DB8540 and later ASICs */
#define NMK_GPIO_EDGELEVEL 0x5C
#define NMK_GPIO_LEVEL 0x60
/* Alternate functions: function C is set in hw by setting both A and B */
#define NMK_GPIO_ALT_GPIO 0
#define NMK_GPIO_ALT_A 1
#define NMK_GPIO_ALT_B 2
#define NMK_GPIO_ALT_C (NMK_GPIO_ALT_A | NMK_GPIO_ALT_B)
#define NMK_GPIO_ALT_CX_SHIFT 2
#define NMK_GPIO_ALT_C1 ((1<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C2 ((2<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C3 ((3<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
#define NMK_GPIO_ALT_C4 ((4<<NMK_GPIO_ALT_CX_SHIFT) | NMK_GPIO_ALT_C)
/* Pull up/down values */
enum nmk_gpio_pull {
NMK_GPIO_PULL_NONE,
NMK_GPIO_PULL_UP,
NMK_GPIO_PULL_DOWN,
};
/* Sleep mode */
enum nmk_gpio_slpm {
NMK_GPIO_SLPM_INPUT,
NMK_GPIO_SLPM_WAKEUP_ENABLE = NMK_GPIO_SLPM_INPUT,
NMK_GPIO_SLPM_NOCHANGE,
NMK_GPIO_SLPM_WAKEUP_DISABLE = NMK_GPIO_SLPM_NOCHANGE,
};
/* Older deprecated pin config API that should go away soon */
extern int nmk_config_pin(pin_cfg_t cfg, bool sleep); extern int nmk_config_pin(pin_cfg_t cfg, bool sleep);
extern int nmk_config_pins(pin_cfg_t *cfgs, int num); extern int nmk_config_pins(pin_cfg_t *cfgs, int num);
extern int nmk_config_pins_sleep(pin_cfg_t *cfgs, int num); extern int nmk_config_pins_sleep(pin_cfg_t *cfgs, int num);
extern int nmk_gpio_set_slpm(int gpio, enum nmk_gpio_slpm mode);
extern int nmk_gpio_set_pull(int gpio, enum nmk_gpio_pull pull);
#ifdef CONFIG_PINCTRL_NOMADIK
extern int nmk_gpio_set_mode(int gpio, int gpio_mode);
#else
static inline int nmk_gpio_set_mode(int gpio, int gpio_mode)
{
return -ENODEV;
}
#endif #endif
extern int nmk_gpio_get_mode(int gpio);
extern void nmk_gpio_wakeups_suspend(void);
extern void nmk_gpio_wakeups_resume(void);
extern void nmk_gpio_clocks_enable(void);
extern void nmk_gpio_clocks_disable(void);
extern void nmk_gpio_read_pull(int gpio_bank, u32 *pull_up);
/*
* Platform data to register a block: only the initial gpio/irq number.
*/
struct nmk_gpio_platform_data {
char *name;
int first_gpio;
int first_irq;
int num_gpio;
u32 (*get_secondary_status)(unsigned int bank);
void (*set_ioforce)(bool enable);
bool supports_sleepmode;
};
#endif /* __PLAT_NOMADIK_GPIO */

View File

@ -18,8 +18,7 @@
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/dmaengine.h> #include <linux/dmaengine.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/platform_data/dma-ste-dma40.h>
#include <plat/ste_dma40.h>
#include <sound/pcm.h> #include <sound/pcm.h>
#include <sound/pcm_params.h> #include <sound/pcm_params.h>