diff options
Diffstat (limited to 'arch/arm/plat-omap/include')
20 files changed, 254 insertions, 49 deletions
diff --git a/arch/arm/plat-omap/include/plat/am33xx.h b/arch/arm/plat-omap/include/plat/am33xx.h new file mode 100644 index 00000000000..06c19bb7bca --- /dev/null +++ b/arch/arm/plat-omap/include/plat/am33xx.h @@ -0,0 +1,25 @@ +/* + * This file contains the address info for various AM33XX modules. + * + * Copyright (C) 2011 Texas Instruments, Inc. - http://www.ti.com/ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation version 2. + * + * This program is distributed "as is" WITHOUT ANY WARRANTY of any + * kind, whether express or implied; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the + * GNU General Public License for more details. + */ + +#ifndef __ASM_ARCH_AM33XX_H +#define __ASM_ARCH_AM33XX_H + +#define L4_SLOW_AM33XX_BASE	0x48000000 + +#define AM33XX_SCM_BASE		0x44E10000 +#define AM33XX_CTRL_BASE	AM33XX_SCM_BASE +#define AM33XX_PRCM_BASE	0x44E00000 + +#endif /* __ASM_ARCH_AM33XX_H */ diff --git a/arch/arm/plat-omap/include/plat/clkdev_omap.h b/arch/arm/plat-omap/include/plat/clkdev_omap.h index 387a9638991..b299b8d201c 100644 --- a/arch/arm/plat-omap/include/plat/clkdev_omap.h +++ b/arch/arm/plat-omap/include/plat/clkdev_omap.h @@ -40,6 +40,7 @@ struct omap_clk {  #define CK_443X		(1 << 11)  #define CK_TI816X	(1 << 12)  #define CK_446X		(1 << 13) +#define CK_1710		(1 << 15)	/* 1710 extra for rate selection */  #define CK_34XX		(CK_3430ES1 | CK_3430ES2PLUS) diff --git a/arch/arm/plat-omap/include/plat/clock.h b/arch/arm/plat-omap/include/plat/clock.h index eb73ab40e95..240a7b9fd94 100644 --- a/arch/arm/plat-omap/include/plat/clock.h +++ b/arch/arm/plat-omap/include/plat/clock.h @@ -59,6 +59,8 @@ struct clkops {  #define RATE_IN_4430		(1 << 5)  #define RATE_IN_TI816X		(1 << 6)  #define RATE_IN_4460		(1 << 7) +#define RATE_IN_AM33XX		(1 << 8) +#define RATE_IN_TI814X		(1 << 9)  #define RATE_IN_24XX		(RATE_IN_242X | RATE_IN_243X)  #define RATE_IN_34XX		(RATE_IN_3430ES1 | RATE_IN_3430ES2PLUS) @@ -84,7 +86,7 @@ struct clkops {  struct clksel_rate {  	u32			val;  	u8			div; -	u8			flags; +	u16			flags;  };  /** diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h index 408a12f7920..6b51086fce1 100644 --- a/arch/arm/plat-omap/include/plat/cpu.h +++ b/arch/arm/plat-omap/include/plat/cpu.h @@ -69,6 +69,7 @@ unsigned int omap_rev(void);   * cpu_is_omap343x():	True for OMAP3430   * cpu_is_omap443x():	True for OMAP4430   * cpu_is_omap446x():	True for OMAP4460 + * cpu_is_omap447x():	True for OMAP4470   */  #define GET_OMAP_CLASS	(omap_rev() & 0xff) @@ -78,6 +79,22 @@ static inline int is_omap ##class (void)		\  	return (GET_OMAP_CLASS == (id)) ? 1 : 0;	\  } +#define GET_AM_CLASS	((omap_rev() >> 24) & 0xff) + +#define IS_AM_CLASS(class, id)				\ +static inline int is_am ##class (void)			\ +{							\ +	return (GET_AM_CLASS == (id)) ? 1 : 0;		\ +} + +#define GET_TI_CLASS	((omap_rev() >> 24) & 0xff) + +#define IS_TI_CLASS(class, id)			\ +static inline int is_ti ##class (void)		\ +{							\ +	return (GET_TI_CLASS == (id)) ? 1 : 0;	\ +} +  #define GET_OMAP_SUBCLASS	((omap_rev() >> 20) & 0x0fff)  #define IS_OMAP_SUBCLASS(subclass, id)			\ @@ -92,12 +109,21 @@ static inline int is_ti ##subclass (void)		\  	return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0;	\  } +#define IS_AM_SUBCLASS(subclass, id)			\ +static inline int is_am ##subclass (void)		\ +{							\ +	return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0;	\ +} +  IS_OMAP_CLASS(7xx, 0x07)  IS_OMAP_CLASS(15xx, 0x15)  IS_OMAP_CLASS(16xx, 0x16)  IS_OMAP_CLASS(24xx, 0x24)  IS_OMAP_CLASS(34xx, 0x34)  IS_OMAP_CLASS(44xx, 0x44) +IS_AM_CLASS(33xx, 0x33) + +IS_TI_CLASS(81xx, 0x81)  IS_OMAP_SUBCLASS(242x, 0x242)  IS_OMAP_SUBCLASS(243x, 0x243) @@ -105,8 +131,11 @@ IS_OMAP_SUBCLASS(343x, 0x343)  IS_OMAP_SUBCLASS(363x, 0x363)  IS_OMAP_SUBCLASS(443x, 0x443)  IS_OMAP_SUBCLASS(446x, 0x446) +IS_OMAP_SUBCLASS(447x, 0x447)  IS_TI_SUBCLASS(816x, 0x816) +IS_TI_SUBCLASS(814x, 0x814) +IS_AM_SUBCLASS(335x, 0x335)  #define cpu_is_omap7xx()		0  #define cpu_is_omap15xx()		0 @@ -116,10 +145,15 @@ IS_TI_SUBCLASS(816x, 0x816)  #define cpu_is_omap243x()		0  #define cpu_is_omap34xx()		0  #define cpu_is_omap343x()		0 +#define cpu_is_ti81xx()			0  #define cpu_is_ti816x()			0 +#define cpu_is_ti814x()			0 +#define cpu_is_am33xx()			0 +#define cpu_is_am335x()			0  #define cpu_is_omap44xx()		0  #define cpu_is_omap443x()		0  #define cpu_is_omap446x()		0 +#define cpu_is_omap447x()		0  #if defined(MULTI_OMAP1)  # if defined(CONFIG_ARCH_OMAP730) @@ -322,7 +356,11 @@ IS_OMAP_TYPE(3517, 0x3517)  # undef cpu_is_omap3530  # undef cpu_is_omap3505  # undef cpu_is_omap3517 +# undef cpu_is_ti81xx  # undef cpu_is_ti816x +# undef cpu_is_ti814x +# undef cpu_is_am33xx +# undef cpu_is_am335x  # define cpu_is_omap3430()		is_omap3430()  # define cpu_is_omap3503()		(cpu_is_omap3430() &&		\  						(!omap3_has_iva()) &&	\ @@ -339,16 +377,22 @@ IS_OMAP_TYPE(3517, 0x3517)  						!omap3_has_sgx())  # undef cpu_is_omap3630  # define cpu_is_omap3630()		is_omap363x() +# define cpu_is_ti81xx()		is_ti81xx()  # define cpu_is_ti816x()		is_ti816x() +# define cpu_is_ti814x()		is_ti814x() +# define cpu_is_am33xx()		is_am33xx() +# define cpu_is_am335x()		is_am335x()  #endif  # if defined(CONFIG_ARCH_OMAP4)  # undef cpu_is_omap44xx  # undef cpu_is_omap443x  # undef cpu_is_omap446x +# undef cpu_is_omap447x  # define cpu_is_omap44xx()		is_omap44xx()  # define cpu_is_omap443x()		is_omap443x()  # define cpu_is_omap446x()		is_omap446x() +# define cpu_is_omap447x()		is_omap447x()  # endif  /* Macros to detect if we have OMAP1 or OMAP2 */ @@ -386,15 +430,27 @@ IS_OMAP_TYPE(3517, 0x3517)  #define TI8168_REV_ES1_0	TI816X_CLASS  #define TI8168_REV_ES1_1	(TI816X_CLASS | (0x1 << 8)) +#define TI814X_CLASS		0x81400034 +#define TI8148_REV_ES1_0	TI814X_CLASS +#define TI8148_REV_ES2_0	(TI814X_CLASS | (0x1 << 8)) +#define TI8148_REV_ES2_1	(TI814X_CLASS | (0x2 << 8)) + +#define AM335X_CLASS		0x33500034 +#define AM335X_REV_ES1_0	AM335X_CLASS +  #define OMAP443X_CLASS		0x44300044  #define OMAP4430_REV_ES1_0	(OMAP443X_CLASS | (0x10 << 8))  #define OMAP4430_REV_ES2_0	(OMAP443X_CLASS | (0x20 << 8))  #define OMAP4430_REV_ES2_1	(OMAP443X_CLASS | (0x21 << 8))  #define OMAP4430_REV_ES2_2	(OMAP443X_CLASS | (0x22 << 8)) +#define OMAP4430_REV_ES2_3	(OMAP443X_CLASS | (0x23 << 8))  #define OMAP446X_CLASS		0x44600044  #define OMAP4460_REV_ES1_0	(OMAP446X_CLASS | (0x10 << 8)) +#define OMAP447X_CLASS		0x44700044 +#define OMAP4470_REV_ES1_0	(OMAP447X_CLASS | (0x10 << 8)) +  void omap2_check_revision(void);  /* diff --git a/arch/arm/plat-omap/include/plat/hardware.h b/arch/arm/plat-omap/include/plat/hardware.h index e87efe1499b..e897978371c 100644 --- a/arch/arm/plat-omap/include/plat/hardware.h +++ b/arch/arm/plat-omap/include/plat/hardware.h @@ -286,6 +286,7 @@  #include <plat/omap24xx.h>  #include <plat/omap34xx.h>  #include <plat/omap44xx.h> -#include <plat/ti816x.h> +#include <plat/ti81xx.h> +#include <plat/am33xx.h>  #endif	/* __ASM_ARCH_OMAP_HARDWARE_H */ diff --git a/arch/arm/plat-omap/include/plat/io.h b/arch/arm/plat-omap/include/plat/io.h index 1234944a4da..0696bae1818 100644 --- a/arch/arm/plat-omap/include/plat/io.h +++ b/arch/arm/plat-omap/include/plat/io.h @@ -73,6 +73,9 @@  #define OMAP4_L3_IO_OFFSET	0xb4000000  #define OMAP4_L3_IO_ADDRESS(pa)	IOMEM((pa) + OMAP4_L3_IO_OFFSET) /* L3 */ +#define AM33XX_L4_WK_IO_OFFSET	0xb5000000 +#define AM33XX_L4_WK_IO_ADDRESS(pa)	IOMEM((pa) + AM33XX_L4_WK_IO_OFFSET) +  #define OMAP4_L3_PER_IO_OFFSET	0xb1100000  #define OMAP4_L3_PER_IO_ADDRESS(pa)	IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET) @@ -154,6 +157,15 @@  #define L4_34XX_SIZE		SZ_4M   /* 1MB of 128MB used, want 1MB sect */  /* + * ---------------------------------------------------------------------------- + * AM33XX specific IO mapping + * ---------------------------------------------------------------------------- + */ +#define L4_WK_AM33XX_PHYS	L4_WK_AM33XX_BASE +#define L4_WK_AM33XX_VIRT	(L4_WK_AM33XX_PHYS + AM33XX_L4_WK_IO_OFFSET) +#define L4_WK_AM33XX_SIZE	SZ_4M   /* 1MB of 128MB used, want 1MB sect */ + +/*   * Need to look at the Size 4M for L4.   * VPOM3430 was not working for Int controller   */ diff --git a/arch/arm/plat-omap/include/plat/iommu.h b/arch/arm/plat-omap/include/plat/iommu.h index a1d79ee1925..88be3e628b3 100644 --- a/arch/arm/plat-omap/include/plat/iommu.h +++ b/arch/arm/plat-omap/include/plat/iommu.h @@ -111,6 +111,32 @@ struct iommu_platform_data {  	u32 da_end;  }; +/** + * struct iommu_arch_data - omap iommu private data + * @name: name of the iommu device + * @iommu_dev: handle of the iommu device + * + * This is an omap iommu private data object, which binds an iommu user + * to its iommu device. This object should be placed at the iommu user's + * dev_archdata so generic IOMMU API can be used without having to + * utilize omap-specific plumbing anymore. + */ +struct omap_iommu_arch_data { +	const char *name; +	struct omap_iommu *iommu_dev; +}; + +/** + * dev_to_omap_iommu() - retrieves an omap iommu object from a user device + * @dev: iommu client device + */ +static inline struct omap_iommu *dev_to_omap_iommu(struct device *dev) +{ +	struct omap_iommu_arch_data *arch_data = dev->archdata.iommu; + +	return arch_data->iommu_dev; +} +  /* IOMMU errors */  #define OMAP_IOMMU_ERR_TLB_MISS		(1 << 0)  #define OMAP_IOMMU_ERR_TRANS_FAULT	(1 << 1) @@ -163,8 +189,8 @@ extern int omap_iommu_set_isr(const char *name,  				    void *priv),  			 void *isr_priv); -extern void omap_iommu_save_ctx(struct omap_iommu *obj); -extern void omap_iommu_restore_ctx(struct omap_iommu *obj); +extern void omap_iommu_save_ctx(struct device *dev); +extern void omap_iommu_restore_ctx(struct device *dev);  extern int omap_install_iommu_arch(const struct iommu_functions *ops);  extern void omap_uninstall_iommu_arch(const struct iommu_functions *ops); @@ -176,6 +202,5 @@ extern ssize_t  omap_iommu_dump_ctx(struct omap_iommu *obj, char *buf, ssize_t len);  extern size_t  omap_dump_tlb_entries(struct omap_iommu *obj, char *buf, ssize_t len); -struct device *omap_find_iommu_device(const char *name);  #endif /* __MACH_IOMMU_H */ diff --git a/arch/arm/plat-omap/include/plat/iovmm.h b/arch/arm/plat-omap/include/plat/iovmm.h index 6af1a91c0f3..498e57cda6c 100644 --- a/arch/arm/plat-omap/include/plat/iovmm.h +++ b/arch/arm/plat-omap/include/plat/iovmm.h @@ -72,18 +72,18 @@ struct iovm_struct {  #define IOVMF_DA_FIXED		(1 << (4 + IOVMF_SW_SHIFT)) -extern struct iovm_struct *omap_find_iovm_area(struct omap_iommu *obj, u32 da); +extern struct iovm_struct *omap_find_iovm_area(struct device *dev, u32 da);  extern u32 -omap_iommu_vmap(struct iommu_domain *domain, struct omap_iommu *obj, u32 da, +omap_iommu_vmap(struct iommu_domain *domain, struct device *dev, u32 da,  			const struct sg_table *sgt, u32 flags);  extern struct sg_table *omap_iommu_vunmap(struct iommu_domain *domain, -				struct omap_iommu *obj, u32 da); +				struct device *dev, u32 da);  extern u32 -omap_iommu_vmalloc(struct iommu_domain *domain, struct omap_iommu *obj, +omap_iommu_vmalloc(struct iommu_domain *domain, struct device *dev,  				u32 da, size_t bytes, u32 flags);  extern void -omap_iommu_vfree(struct iommu_domain *domain, struct omap_iommu *obj, +omap_iommu_vfree(struct iommu_domain *domain, struct device *dev,  				const u32 da); -extern void *omap_da_to_va(struct omap_iommu *obj, u32 da); +extern void *omap_da_to_va(struct device *dev, u32 da);  #endif /* __IOMMU_MMAP_H */ diff --git a/arch/arm/plat-omap/include/plat/irqs.h b/arch/arm/plat-omap/include/plat/irqs.h index ebda7382c65..2efd6454bce 100644 --- a/arch/arm/plat-omap/include/plat/irqs.h +++ b/arch/arm/plat-omap/include/plat/irqs.h @@ -357,7 +357,7 @@  #define INT_35XX_EMAC_C0_TX_PULSE_IRQ	69  #define INT_35XX_EMAC_C0_MISC_PULSE_IRQ	70  #define INT_35XX_USBOTG_IRQ		71 -#define INT_35XX_UART4			84 +#define INT_35XX_UART4_IRQ		84  #define INT_35XX_CCDC_VD0_IRQ		88  #define INT_35XX_CCDC_VD1_IRQ		92  #define INT_35XX_CCDC_VD2_IRQ		93 diff --git a/arch/arm/plat-omap/include/plat/mmc.h b/arch/arm/plat-omap/include/plat/mmc.h index 94cf70afb23..f75946c3293 100644 --- a/arch/arm/plat-omap/include/plat/mmc.h +++ b/arch/arm/plat-omap/include/plat/mmc.h @@ -96,6 +96,7 @@ struct omap_mmc_platform_data {  		 */  		u8  wires;	/* Used for the MMC driver on omap1 and 2420 */  		u32 caps;	/* Used for the MMC driver on 2430 and later */ +		u32 pm_caps;	/* PM capabilities of the mmc */  		/*  		 * nomux means "standard" muxing is wrong on this board, and diff --git a/arch/arm/plat-omap/include/plat/omap-secure.h b/arch/arm/plat-omap/include/plat/omap-secure.h new file mode 100644 index 00000000000..64f9d1c7f1b --- /dev/null +++ b/arch/arm/plat-omap/include/plat/omap-secure.h @@ -0,0 +1,13 @@ +#ifndef __OMAP_SECURE_H__ +#define __OMAP_SECURE_H__ + +#include <linux/types.h> + +#ifdef CONFIG_ARCH_OMAP2PLUS +extern int omap_secure_ram_reserve_memblock(void); +#else +static inline void omap_secure_ram_reserve_memblock(void) +{ } +#endif + +#endif /* __OMAP_SECURE_H__ */ diff --git a/arch/arm/plat-omap/include/plat/omap-serial.h b/arch/arm/plat-omap/include/plat/omap-serial.h index 2682043f5a5..9ff444469f3 100644 --- a/arch/arm/plat-omap/include/plat/omap-serial.h +++ b/arch/arm/plat-omap/include/plat/omap-serial.h @@ -19,6 +19,7 @@  #include <linux/serial_core.h>  #include <linux/platform_device.h> +#include <linux/pm_qos.h>  #include <plat/mux.h> @@ -33,6 +34,8 @@  #define OMAP_MODE13X_SPEED	230400 +#define OMAP_UART_SCR_TX_EMPTY	0x08 +  /* WER = 0x7F   * Enable module level wakeup in WER reg   */ @@ -51,18 +54,27 @@  #define OMAP_UART_DMA_CH_FREE	-1 -#define RX_TIMEOUT		(3 * HZ)  #define OMAP_MAX_HSUART_PORTS	4  #define MSR_SAVE_FLAGS		UART_MSR_ANY_DELTA +#define UART_ERRATA_i202_MDR1_ACCESS	BIT(0) +#define UART_ERRATA_i291_DMA_FORCEIDLE	BIT(1) +  struct omap_uart_port_info {  	bool			dma_enabled;	/* To specify DMA Mode */  	unsigned int		uartclk;	/* UART clock rate */ -	void __iomem		*membase;	/* ioremap cookie or NULL */ -	resource_size_t		mapbase;	/* resource base */ -	unsigned long		irqflags;	/* request_irq flags */  	upf_t			flags;		/* UPF_* flags */ +	u32			errata; +	unsigned int		dma_rx_buf_size; +	unsigned int		dma_rx_timeout; +	unsigned int		autosuspend_timeout; +	unsigned int		dma_rx_poll_rate; + +	int (*get_context_loss_count)(struct device *); +	void (*set_forceidle)(struct platform_device *); +	void (*set_noidle)(struct platform_device *); +	void (*enable_wakeup)(struct platform_device *, bool);  };  struct uart_omap_dma { @@ -86,8 +98,9 @@ struct uart_omap_dma {  	spinlock_t		rx_lock;  	/* timer to poll activity on rx dma */  	struct timer_list	rx_timer; -	int			rx_buf_size; -	int			rx_timeout; +	unsigned int		rx_buf_size; +	unsigned int		rx_poll_rate; +	unsigned int		rx_timeout;  };  struct uart_omap_port { @@ -100,6 +113,10 @@ struct uart_omap_port {  	unsigned char		mcr;  	unsigned char		fcr;  	unsigned char		efr; +	unsigned char		dll; +	unsigned char		dlh; +	unsigned char		mdr1; +	unsigned char		scr;  	int			use_dma;  	/* @@ -111,6 +128,14 @@ struct uart_omap_port {  	unsigned char		msr_saved_flags;  	char			name[20];  	unsigned long		port_activity; +	u32			context_loss_cnt; +	u32			errata; +	u8			wakeups_enabled; + +	struct pm_qos_request	pm_qos_request; +	u32			latency; +	u32			calc_latency; +	struct work_struct	qos_work;  };  #endif /* __OMAP_SERIAL_H__ */ diff --git a/arch/arm/plat-omap/include/plat/omap34xx.h b/arch/arm/plat-omap/include/plat/omap34xx.h index b9e85886b9d..0d818acf391 100644 --- a/arch/arm/plat-omap/include/plat/omap34xx.h +++ b/arch/arm/plat-omap/include/plat/omap34xx.h @@ -35,6 +35,8 @@  #define L4_EMU_34XX_BASE	0x54000000  #define L3_34XX_BASE		0x68000000 +#define L4_WK_AM33XX_BASE	0x44C00000 +  #define OMAP3430_32KSYNCT_BASE	0x48320000  #define OMAP3430_CM_BASE	0x48004800  #define OMAP3430_PRM_BASE	0x48306800 diff --git a/arch/arm/plat-omap/include/plat/omap44xx.h b/arch/arm/plat-omap/include/plat/omap44xx.h index ea2b8a6306e..c0d478e55c8 100644 --- a/arch/arm/plat-omap/include/plat/omap44xx.h +++ b/arch/arm/plat-omap/include/plat/omap44xx.h @@ -45,6 +45,7 @@  #define OMAP44XX_WKUPGEN_BASE		0x48281000  #define OMAP44XX_MCPDM_BASE		0x40132000  #define OMAP44XX_MCPDM_L3_BASE		0x49032000 +#define OMAP44XX_SAR_RAM_BASE		0x4a326000  #define OMAP44XX_MAILBOX_BASE		(L4_44XX_BASE + 0xF4000)  #define OMAP44XX_HSUSB_OTG_BASE		(L4_44XX_BASE + 0xAB000) diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.h b/arch/arm/plat-omap/include/plat/omap_hwmod.h index 8b372ede17c..647010109af 100644 --- a/arch/arm/plat-omap/include/plat/omap_hwmod.h +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h @@ -97,6 +97,7 @@ struct omap_hwmod_mux_info {  	struct omap_device_pad		*pads;  	int				nr_pads_dynamic;  	struct omap_device_pad		**pads_dynamic; +	int				*irqs;  	bool				enabled;  }; @@ -416,10 +417,13 @@ struct omap_hwmod_omap4_prcm {   * _HWMOD_NO_MPU_PORT: no path exists for the MPU to write to this module   * _HWMOD_WAKEUP_ENABLED: set when the omap_hwmod code has enabled ENAWAKEUP   * _HWMOD_SYSCONFIG_LOADED: set when the OCP_SYSCONFIG value has been cached + * _HWMOD_SKIP_ENABLE: set if hwmod enabled during init (HWMOD_INIT_NO_IDLE) - + *     causes the first call to _enable() to only update the pinmux   */  #define _HWMOD_NO_MPU_PORT			(1 << 0)  #define _HWMOD_WAKEUP_ENABLED			(1 << 1)  #define _HWMOD_SYSCONFIG_LOADED			(1 << 2) +#define _HWMOD_SKIP_ENABLE			(1 << 3)  /*   * omap_hwmod._state definitions @@ -604,6 +608,8 @@ int omap_hwmod_get_context_loss_count(struct omap_hwmod *oh);  int omap_hwmod_no_setup_reset(struct omap_hwmod *oh); +int omap_hwmod_pad_route_irq(struct omap_hwmod *oh, int pad_idx, int irq_idx); +  /*   * Chip variant-specific hwmod init routines - XXX should be converted   * to use initcalls once the initial boot ordering is straightened out diff --git a/arch/arm/plat-omap/include/plat/serial.h b/arch/arm/plat-omap/include/plat/serial.h index 1ab9fd6abe6..198d1e6a4a6 100644 --- a/arch/arm/plat-omap/include/plat/serial.h +++ b/arch/arm/plat-omap/include/plat/serial.h @@ -2,7 +2,7 @@   * arch/arm/plat-omap/include/mach/serial.h   *   * Copyright (C) 2009 Texas Instruments - * Addded OMAP4 support- Santosh Shilimkar <santosh.shilimkar@ti.com> + * Added OMAP4 support- Santosh Shilimkar <santosh.shilimkar@ti.com>   *   * This program is distributed in the hope that it will be useful,   * but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -44,6 +44,7 @@  #define OMAP3_UART2_BASE	OMAP2_UART2_BASE  #define OMAP3_UART3_BASE	0x49020000  #define OMAP3_UART4_BASE	0x49042000	/* Only on 36xx */ +#define OMAP3_UART4_AM35XX_BASE	0x4809E000	/* Only on AM35xx */  /* OMAP4 serial ports */  #define OMAP4_UART1_BASE	OMAP2_UART1_BASE @@ -51,10 +52,10 @@  #define OMAP4_UART3_BASE	0x48020000  #define OMAP4_UART4_BASE	0x4806e000 -/* TI816X serial ports */ -#define TI816X_UART1_BASE	0x48020000 -#define TI816X_UART2_BASE	0x48022000 -#define TI816X_UART3_BASE	0x48024000 +/* TI81XX serial ports */ +#define TI81XX_UART1_BASE	0x48020000 +#define TI81XX_UART2_BASE	0x48022000 +#define TI81XX_UART3_BASE	0x48024000  /* AM3505/3517 UART4 */  #define AM35XX_UART4_BASE	0x4809E000	/* Only on AM3505/3517 */ @@ -89,9 +90,9 @@  #define OMAP4UART2		OMAP2UART2  #define OMAP4UART3		43  #define OMAP4UART4		44 -#define TI816XUART1		81 -#define TI816XUART2		82 -#define TI816XUART3		83 +#define TI81XXUART1		81 +#define TI81XXUART2		82 +#define TI81XXUART3		83  #define ZOOM_UART		95		/* Only on zoom2/3 */  /* This is only used by 8250.c for omap1510 */ @@ -106,15 +107,13 @@  #ifndef __ASSEMBLER__  struct omap_board_data; +struct omap_uart_port_info;  extern void omap_serial_init(void); -extern void omap_serial_init_port(struct omap_board_data *bdata);  extern int omap_uart_can_sleep(void); -extern void omap_uart_check_wakeup(void); -extern void omap_uart_prepare_suspend(void); -extern void omap_uart_prepare_idle(int num); -extern void omap_uart_resume_idle(int num); -extern void omap_uart_enable_irqs(int enable); +extern void omap_serial_board_init(struct omap_uart_port_info *platform_data); +extern void omap_serial_init_port(struct omap_board_data *bdata, +		struct omap_uart_port_info *platform_data);  #endif  #endif diff --git a/arch/arm/plat-omap/include/plat/sram.h b/arch/arm/plat-omap/include/plat/sram.h index f500fc34d06..75aa1b2bef5 100644 --- a/arch/arm/plat-omap/include/plat/sram.h +++ b/arch/arm/plat-omap/include/plat/sram.h @@ -95,6 +95,10 @@ static inline void omap_push_sram_idle(void) {}   */  #define OMAP2_SRAM_PA		0x40200000  #define OMAP3_SRAM_PA           0x40200000 +#ifdef CONFIG_OMAP4_ERRATA_I688 +#define OMAP4_SRAM_PA		0x40304000 +#define OMAP4_SRAM_VA		0xfe404000 +#else  #define OMAP4_SRAM_PA		0x40300000 - +#endif  #endif diff --git a/arch/arm/plat-omap/include/plat/ti816x.h b/arch/arm/plat-omap/include/plat/ti81xx.h index 50510f5dda1..8f9843f7842 100644 --- a/arch/arm/plat-omap/include/plat/ti816x.h +++ b/arch/arm/plat-omap/include/plat/ti81xx.h @@ -1,5 +1,5 @@  /* - * This file contains the address data for various TI816X modules. + * This file contains the address data for various TI81XX modules.   *   * Copyright (C) 2010 Texas Instruments, Inc. - http://www.ti.com/   * @@ -13,15 +13,15 @@   * GNU General Public License for more details.   */ -#ifndef __ASM_ARCH_TI816X_H -#define __ASM_ARCH_TI816X_H +#ifndef __ASM_ARCH_TI81XX_H +#define __ASM_ARCH_TI81XX_H -#define L4_SLOW_TI816X_BASE	0x48000000 +#define L4_SLOW_TI81XX_BASE	0x48000000 -#define TI816X_SCM_BASE		0x48140000 -#define TI816X_CTRL_BASE	TI816X_SCM_BASE -#define TI816X_PRCM_BASE	0x48180000 +#define TI81XX_SCM_BASE		0x48140000 +#define TI81XX_CTRL_BASE	TI81XX_SCM_BASE +#define TI81XX_PRCM_BASE	0x48180000 -#define TI816X_ARM_INTC_BASE	0x48200000 +#define TI81XX_ARM_INTC_BASE	0x48200000 -#endif /* __ASM_ARCH_TI816X_H */ +#endif /* __ASM_ARCH_TI81XX_H */ diff --git a/arch/arm/plat-omap/include/plat/uncompress.h b/arch/arm/plat-omap/include/plat/uncompress.h index 2f472e989ec..6ee90495ca4 100644 --- a/arch/arm/plat-omap/include/plat/uncompress.h +++ b/arch/arm/plat-omap/include/plat/uncompress.h @@ -99,9 +99,9 @@ static inline void flush(void)  #define DEBUG_LL_ZOOM(mach)						\  	_DEBUG_LL_ENTRY(mach, ZOOM_UART_BASE, ZOOM_PORT_SHIFT, ZOOM_UART) -#define DEBUG_LL_TI816X(p, mach)					\ -	_DEBUG_LL_ENTRY(mach, TI816X_UART##p##_BASE, OMAP_PORT_SHIFT,	\ -		TI816XUART##p) +#define DEBUG_LL_TI81XX(p, mach)					\ +	_DEBUG_LL_ENTRY(mach, TI81XX_UART##p##_BASE, OMAP_PORT_SHIFT,	\ +		TI81XXUART##p)  static inline void __arch_decomp_setup(unsigned long arch_id)  { @@ -177,7 +177,10 @@ static inline void __arch_decomp_setup(unsigned long arch_id)  		DEBUG_LL_ZOOM(omap_zoom3);  		/* TI8168 base boards using UART3 */ -		DEBUG_LL_TI816X(3, ti8168evm); +		DEBUG_LL_TI81XX(3, ti8168evm); + +		/* TI8148 base boards using UART1 */ +		DEBUG_LL_TI81XX(1, ti8148evm);  	} while (0);  } diff --git a/arch/arm/plat-omap/include/plat/usb.h b/arch/arm/plat-omap/include/plat/usb.h index 17d3c939775..dc864b580da 100644 --- a/arch/arm/plat-omap/include/plat/usb.h +++ b/arch/arm/plat-omap/include/plat/usb.h @@ -100,9 +100,6 @@ extern void usb_musb_init(struct omap_musb_board_data *board_data);  extern void usbhs_init(const struct usbhs_omap_board_data *pdata); -extern int omap_usbhs_enable(struct device *dev); -extern void omap_usbhs_disable(struct device *dev); -  extern int omap4430_phy_power(struct device *dev, int ID, int on);  extern int omap4430_phy_set_clk(struct device *dev, int on);  extern int omap4430_phy_init(struct device *dev); @@ -114,6 +111,7 @@ extern void am35x_musb_reset(void);  extern void am35x_musb_phy_power(u8 on);  extern void am35x_musb_clear_irq(void);  extern void am35x_set_mode(u8 musb_mode); +extern void ti81xx_musb_phy_power(u8 on);  /*   * FIXME correct answer depends on hmc_mode, @@ -273,6 +271,37 @@ static inline void omap2_usbfs_init(struct omap_usb_config *pdata)  #define CONF2_OTGPWRDN		(1 << 2)  #define CONF2_DATPOL		(1 << 1) +/* TI81XX specific definitions */ +#define USBCTRL0	0x620 +#define USBSTAT0	0x624 + +/* TI816X PHY controls bits */ +#define TI816X_USBPHY0_NORMAL_MODE	(1 << 0) +#define TI816X_USBPHY_REFCLK_OSC	(1 << 8) + +/* TI814X PHY controls bits */ +#define USBPHY_CM_PWRDN		(1 << 0) +#define USBPHY_OTG_PWRDN	(1 << 1) +#define USBPHY_CHGDET_DIS	(1 << 2) +#define USBPHY_CHGDET_RSTRT	(1 << 3) +#define USBPHY_SRCONDM		(1 << 4) +#define USBPHY_SINKONDP		(1 << 5) +#define USBPHY_CHGISINK_EN	(1 << 6) +#define USBPHY_CHGVSRC_EN	(1 << 7) +#define USBPHY_DMPULLUP		(1 << 8) +#define USBPHY_DPPULLUP		(1 << 9) +#define USBPHY_CDET_EXTCTL	(1 << 10) +#define USBPHY_GPIO_MODE	(1 << 12) +#define USBPHY_DPOPBUFCTL	(1 << 13) +#define USBPHY_DMOPBUFCTL	(1 << 14) +#define USBPHY_DPINPUT		(1 << 15) +#define USBPHY_DMINPUT		(1 << 16) +#define USBPHY_DPGPIO_PD	(1 << 17) +#define USBPHY_DMGPIO_PD	(1 << 18) +#define USBPHY_OTGVDET_EN	(1 << 19) +#define USBPHY_OTGSESSEND_EN	(1 << 20) +#define USBPHY_DATA_POLARITY	(1 << 23) +  #if defined(CONFIG_ARCH_OMAP1) && defined(CONFIG_USB)  u32 omap1_usb0_init(unsigned nwires, unsigned is_device);  u32 omap1_usb1_init(unsigned nwires);  |