diff options
Diffstat (limited to 'arch/arm/plat-orion/include')
| -rw-r--r-- | arch/arm/plat-orion/include/plat/addr-map.h | 54 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/audio.h | 11 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/cache-feroceon-l2.h | 11 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/common.h | 113 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/ehci-orion.h | 27 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/irq.h | 2 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/mpp.h | 34 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/mv_xor.h | 30 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/mvsdio.h | 21 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/orion-gpio.h (renamed from arch/arm/plat-orion/include/plat/gpio.h) | 27 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/orion_nand.h | 26 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/orion_wdt.h | 18 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/pcie.h | 3 | ||||
| -rw-r--r-- | arch/arm/plat-orion/include/plat/time.h | 5 | 
14 files changed, 216 insertions, 166 deletions
diff --git a/arch/arm/plat-orion/include/plat/addr-map.h b/arch/arm/plat-orion/include/plat/addr-map.h new file mode 100644 index 00000000000..b76c06569fe --- /dev/null +++ b/arch/arm/plat-orion/include/plat/addr-map.h @@ -0,0 +1,54 @@ +/* + * arch/arm/plat-orion/include/plat/addr-map.h + * + * Marvell Orion SoC address map handling. + * + * This file is licensed under the terms of the GNU General Public + * License version 2.  This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __PLAT_ADDR_MAP_H +#define __PLAT_ADDR_MAP_H + +extern struct mbus_dram_target_info orion_mbus_dram_info; + +struct orion_addr_map_cfg { +	const int num_wins;	/* Total number of windows */ +	const int remappable_wins; +	void __iomem *bridge_virt_base; +	int hw_io_coherency; + +	/* If NULL, the default cpu_win_can_remap will be used, using +	   the value in remappable_wins */ +	int (*cpu_win_can_remap) (const struct orion_addr_map_cfg *cfg, +				  const int win); +	/* If NULL, the default win_cfg_base will be used, using the +	   value in bridge_virt_base */ +	void __iomem *(*win_cfg_base) (const struct orion_addr_map_cfg *cfg, +				 const int win); +}; + +/* + * Information needed to setup one address mapping. + */ +struct orion_addr_map_info { +	const int win; +	const u32 base; +	const u32 size; +	const u8 target; +	const u8 attr; +	const int remap; +}; + +void __init orion_config_wins(struct orion_addr_map_cfg *cfg, +			      const struct orion_addr_map_info *info); + +void __init orion_setup_cpu_win(const struct orion_addr_map_cfg *cfg, +				const int win, const u32 base, +				const u32 size, const u8 target, +				const u8 attr, const int remap); + +void __init orion_setup_cpu_mbus_target(const struct orion_addr_map_cfg *cfg, +					const void __iomem *ddr_window_cpu_base); +#endif diff --git a/arch/arm/plat-orion/include/plat/audio.h b/arch/arm/plat-orion/include/plat/audio.h deleted file mode 100644 index 9cf1f781329..00000000000 --- a/arch/arm/plat-orion/include/plat/audio.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef __PLAT_AUDIO_H -#define __PLAT_AUDIO_H - -#include <linux/mbus.h> - -struct kirkwood_asoc_platform_data { -	u32 tclk; -	struct mbus_dram_target_info *dram; -	int burst; -}; -#endif diff --git a/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h b/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h deleted file mode 100644 index 06f982d5569..00000000000 --- a/arch/arm/plat-orion/include/plat/cache-feroceon-l2.h +++ /dev/null @@ -1,11 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/cache-feroceon-l2.h - * - * Copyright (C) 2008 Marvell Semiconductor - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -extern void __init feroceon_l2_init(int l2_wt_override); diff --git a/arch/arm/plat-orion/include/plat/common.h b/arch/arm/plat-orion/include/plat/common.h new file mode 100644 index 00000000000..d9a24f605a2 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/common.h @@ -0,0 +1,113 @@ +/* + * arch/arm/plat-orion/include/plat/common.h + * + * Marvell Orion SoC common setup code used by different mach-/common.c + * + * This file is licensed under the terms of the GNU General Public + * License version 2.  This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __PLAT_COMMON_H +#include <linux/mv643xx_eth.h> +#include <linux/platform_data/usb-ehci-orion.h> + +struct dsa_platform_data; +struct mv_sata_platform_data; + +void __init orion_uart0_init(void __iomem *membase, +			     resource_size_t mapbase, +			     unsigned int irq, +			     struct clk *clk); + +void __init orion_uart1_init(void __iomem *membase, +			     resource_size_t mapbase, +			     unsigned int irq, +			     struct clk *clk); + +void __init orion_uart2_init(void __iomem *membase, +			     resource_size_t mapbase, +			     unsigned int irq, +			     struct clk *clk); + +void __init orion_uart3_init(void __iomem *membase, +			     resource_size_t mapbase, +			     unsigned int irq, +			     struct clk *clk); + +void __init orion_rtc_init(unsigned long mapbase, +			   unsigned long irq); + +void __init orion_ge00_init(struct mv643xx_eth_platform_data *eth_data, +			    unsigned long mapbase, +			    unsigned long irq, +			    unsigned long irq_err, +			    unsigned int tx_csum_limit); + +void __init orion_ge01_init(struct mv643xx_eth_platform_data *eth_data, +			    unsigned long mapbase, +			    unsigned long irq, +			    unsigned long irq_err, +			    unsigned int tx_csum_limit); + +void __init orion_ge10_init(struct mv643xx_eth_platform_data *eth_data, +			    unsigned long mapbase, +			    unsigned long irq, +			    unsigned long irq_err); + +void __init orion_ge11_init(struct mv643xx_eth_platform_data *eth_data, +			    unsigned long mapbase, +			    unsigned long irq, +			    unsigned long irq_err); + +void __init orion_ge00_switch_init(struct dsa_platform_data *d, +				   int irq); + +void __init orion_i2c_init(unsigned long mapbase, +			   unsigned long irq, +			   unsigned long freq_m); + +void __init orion_i2c_1_init(unsigned long mapbase, +			     unsigned long irq, +			     unsigned long freq_m); + +void __init orion_spi_init(unsigned long mapbase); + +void __init orion_spi_1_init(unsigned long mapbase); + +void __init orion_wdt_init(void); + +void __init orion_xor0_init(unsigned long mapbase_low, +			    unsigned long mapbase_high, +			    unsigned long irq_0, +			    unsigned long irq_1); + +void __init orion_xor1_init(unsigned long mapbase_low, +			    unsigned long mapbase_high, +			    unsigned long irq_0, +			    unsigned long irq_1); + +void __init orion_ehci_init(unsigned long mapbase, +			    unsigned long irq, +			    enum orion_ehci_phy_ver phy_version); + +void __init orion_ehci_1_init(unsigned long mapbase, +			      unsigned long irq); + +void __init orion_ehci_2_init(unsigned long mapbase, +			      unsigned long irq); + +void __init orion_sata_init(struct mv_sata_platform_data *sata_data, +			    unsigned long mapbase, +			    unsigned long irq); + +void __init orion_crypto_init(unsigned long mapbase, +			      unsigned long srambase, +			      unsigned long sram_size, +			      unsigned long irq); + +void __init orion_clkdev_add(const char *con_id, const char *dev_id, +			     struct clk *clk); + +void __init orion_clkdev_init(struct clk *tclk); +#endif diff --git a/arch/arm/plat-orion/include/plat/ehci-orion.h b/arch/arm/plat-orion/include/plat/ehci-orion.h deleted file mode 100644 index 4ec668e7746..00000000000 --- a/arch/arm/plat-orion/include/plat/ehci-orion.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/ehci-orion.h - * - * This file is licensed under the terms of the GNU General Public - * License version 2.  This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -#ifndef __PLAT_EHCI_ORION_H -#define __PLAT_EHCI_ORION_H - -#include <linux/mbus.h> - -enum orion_ehci_phy_ver { -	EHCI_PHY_ORION, -	EHCI_PHY_DD, -	EHCI_PHY_KW, -	EHCI_PHY_NA, -}; - -struct orion_ehci_data { -	struct mbus_dram_target_info	*dram; -	enum orion_ehci_phy_ver phy_version; -}; - - -#endif diff --git a/arch/arm/plat-orion/include/plat/irq.h b/arch/arm/plat-orion/include/plat/irq.h index f05eeab9496..96be19e9bd9 100644 --- a/arch/arm/plat-orion/include/plat/irq.h +++ b/arch/arm/plat-orion/include/plat/irq.h @@ -12,6 +12,4 @@  #define __PLAT_IRQ_H  void orion_irq_init(unsigned int irq_start, void __iomem *maskaddr); - -  #endif diff --git a/arch/arm/plat-orion/include/plat/mpp.h b/arch/arm/plat-orion/include/plat/mpp.h new file mode 100644 index 00000000000..254552fee88 --- /dev/null +++ b/arch/arm/plat-orion/include/plat/mpp.h @@ -0,0 +1,34 @@ +/* + * arch/arm/plat-orion/include/plat/mpp.h + * + * Marvell Orion SoC MPP handling. + * + * This file is licensed under the terms of the GNU General Public + * License version 2.  This program is licensed "as is" without any + * warranty of any kind, whether express or implied. + */ + +#ifndef __PLAT_MPP_H +#define __PLAT_MPP_H + +#define MPP_NUM(x)	((x) & 0xff) +#define MPP_SEL(x)	(((x) >> 8) & 0xf) + +/* This is the generic MPP macro, without any variant information. +   Each machine architecture is expected to extend this with further +   bit fields indicating which MPP configurations are valid for a +   specific variant. */ + +#define GENERIC_MPP(_num, _sel, _in, _out) ( \ +	/* MPP number */		((_num) & 0xff) | \ +	/* MPP select value */		(((_sel) & 0xf) << 8) | \ +	/* may be input signal */	((!!(_in)) << 12) | \ +	/* may be output signal */	((!!(_out)) << 13)) + +#define MPP_INPUT_MASK		GENERIC_MPP(0, 0x0, 1, 0) +#define MPP_OUTPUT_MASK		GENERIC_MPP(0, 0x0, 0, 1) + +void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask, +			   unsigned int mpp_max, void __iomem *dev_bus); + +#endif diff --git a/arch/arm/plat-orion/include/plat/mv_xor.h b/arch/arm/plat-orion/include/plat/mv_xor.h deleted file mode 100644 index bd5f3bdb4ae..00000000000 --- a/arch/arm/plat-orion/include/plat/mv_xor.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/mv_xor.h - * - * Marvell XOR platform device data definition file. - */ - -#ifndef __PLAT_MV_XOR_H -#define __PLAT_MV_XOR_H - -#include <linux/dmaengine.h> -#include <linux/mbus.h> - -#define MV_XOR_SHARED_NAME	"mv_xor_shared" -#define MV_XOR_NAME		"mv_xor" - -struct mbus_dram_target_info; - -struct mv_xor_platform_shared_data { -	struct mbus_dram_target_info	*dram; -}; - -struct mv_xor_platform_data { -	struct platform_device		*shared; -	int				hw_id; -	dma_cap_mask_t			cap_mask; -	size_t				pool_size; -}; - - -#endif diff --git a/arch/arm/plat-orion/include/plat/mvsdio.h b/arch/arm/plat-orion/include/plat/mvsdio.h deleted file mode 100644 index 14ca8867600..00000000000 --- a/arch/arm/plat-orion/include/plat/mvsdio.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/mvsdio.h - * - * This file is licensed under the terms of the GNU General Public - * License version 2.  This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -#ifndef __MACH_MVSDIO_H -#define __MACH_MVSDIO_H - -#include <linux/mbus.h> - -struct mvsdio_platform_data { -	struct mbus_dram_target_info *dram; -	unsigned int clock; -	int gpio_card_detect; -	int gpio_write_protect; -}; - -#endif diff --git a/arch/arm/plat-orion/include/plat/gpio.h b/arch/arm/plat-orion/include/plat/orion-gpio.h index 07c430fdc9e..e763988b04b 100644 --- a/arch/arm/plat-orion/include/plat/gpio.h +++ b/arch/arm/plat-orion/include/plat/orion-gpio.h @@ -1,5 +1,5 @@  /* - * arch/arm/plat-orion/include/plat/gpio.h + * arch/arm/plat-orion/include/plat/orion-gpio.h   *   * Marvell Orion SoC GPIO handling.   * @@ -12,32 +12,25 @@  #define __PLAT_GPIO_H  #include <linux/init.h> - -/* - * GENERIC_GPIO primitives. - */ -#define gpio_get_value  __gpio_get_value -#define gpio_set_value  __gpio_set_value -#define gpio_cansleep   __gpio_cansleep - +#include <linux/types.h> +#include <linux/irqdomain.h>  /*   * Orion-specific GPIO API extensions.   */  void orion_gpio_set_unused(unsigned pin);  void orion_gpio_set_blink(unsigned pin, int blink); +int orion_gpio_led_blink_set(unsigned gpio, int state, +	unsigned long *delay_on, unsigned long *delay_off);  #define GPIO_INPUT_OK		(1 << 0)  #define GPIO_OUTPUT_OK		(1 << 1)  void orion_gpio_set_valid(unsigned pin, int mode);  /* Initialize gpiolib. */ -void __init orion_gpio_init(void); - -/* - * GPIO interrupt handling. - */ -extern struct irq_chip orion_gpio_irq_chip; -void orion_gpio_irq_handler(int irqoff); - +void __init orion_gpio_init(struct device_node *np, +			    int gpio_base, int ngpio, +			    void __iomem *base, int mask_offset, +			    int secondary_irq_base, +			    int irq[4]);  #endif diff --git a/arch/arm/plat-orion/include/plat/orion_nand.h b/arch/arm/plat-orion/include/plat/orion_nand.h deleted file mode 100644 index 9f3c180834d..00000000000 --- a/arch/arm/plat-orion/include/plat/orion_nand.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/orion_nand.h - * - * This file is licensed under the terms of the GNU General Public - * License version 2.  This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -#ifndef __PLAT_ORION_NAND_H -#define __PLAT_ORION_NAND_H - -/* - * Device bus NAND private data - */ -struct orion_nand_data { -	struct mtd_partition *parts; -	int (*dev_ready)(struct mtd_info *mtd); -	u32 nr_parts; -	u8 ale;		/* address line number connected to ALE */ -	u8 cle;		/* address line number connected to CLE */ -	u8 width;	/* buswidth */ -	u8 chip_delay; -}; - - -#endif diff --git a/arch/arm/plat-orion/include/plat/orion_wdt.h b/arch/arm/plat-orion/include/plat/orion_wdt.h deleted file mode 100644 index 665c362a2fb..00000000000 --- a/arch/arm/plat-orion/include/plat/orion_wdt.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * arch/arm/plat-orion/include/plat/orion_wdt.h - * - * This file is licensed under the terms of the GNU General Public - * License version 2. This program is licensed "as is" without any - * warranty of any kind, whether express or implied. - */ - -#ifndef __PLAT_ORION_WDT_H -#define __PLAT_ORION_WDT_H - -struct orion_wdt_platform_data { -	u32	tclk;		/* no <linux/clk.h> support yet */ -}; - - -#endif - diff --git a/arch/arm/plat-orion/include/plat/pcie.h b/arch/arm/plat-orion/include/plat/pcie.h index cc99163e73f..fe5b9e86274 100644 --- a/arch/arm/plat-orion/include/plat/pcie.h +++ b/arch/arm/plat-orion/include/plat/pcie.h @@ -20,8 +20,7 @@ int orion_pcie_x4_mode(void __iomem *base);  int orion_pcie_get_local_bus_nr(void __iomem *base);  void orion_pcie_set_local_bus_nr(void __iomem *base, int nr);  void orion_pcie_reset(void __iomem *base); -void orion_pcie_setup(void __iomem *base, -		      struct mbus_dram_target_info *dram); +void orion_pcie_setup(void __iomem *base);  int orion_pcie_rd_conf(void __iomem *base, struct pci_bus *bus,  		       u32 devfn, int where, int size, u32 *val);  int orion_pcie_rd_conf_tlp(void __iomem *base, struct pci_bus *bus, diff --git a/arch/arm/plat-orion/include/plat/time.h b/arch/arm/plat-orion/include/plat/time.h index c06ca35f361..07527e417c6 100644 --- a/arch/arm/plat-orion/include/plat/time.h +++ b/arch/arm/plat-orion/include/plat/time.h @@ -11,7 +11,10 @@  #ifndef __PLAT_TIME_H  #define __PLAT_TIME_H -void orion_time_init(unsigned int irq, unsigned int tclk); +void orion_time_set_base(void __iomem *timer_base); + +void orion_time_init(void __iomem *bridge_base, u32 bridge_timer1_clr_mask, +		     unsigned int irq, unsigned int tclk);  #endif  | 
