diff options
Diffstat (limited to 'arch')
35 files changed, 249 insertions, 85 deletions
| diff --git a/arch/arm/cpu/arm926ejs/at91/eflash.c b/arch/arm/cpu/arm926ejs/at91/eflash.c index 3e21cdb2f..3f3926428 100644 --- a/arch/arm/cpu/arm926ejs/at91/eflash.c +++ b/arch/arm/cpu/arm926ejs/at91/eflash.c @@ -28,7 +28,7 @@   * by u-Boot commands.   *   * Note: Redundant environment will not work in this flash since - * it does use partial page writes. Make sure the environent spans + * it does use partial page writes. Make sure the environment spans   * whole pages!   */ diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c index cde3172fe..d4711c070 100644 --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c @@ -302,7 +302,7 @@ int arch_cpu_init(void)  	/*  	 * Configures the I/O voltage of the pads connected to Egigabit  	 * Ethernet interface to 1.8V -	 * By defult it is set to 3.3V +	 * By default it is set to 3.3V  	 */  	reg = readl(KW_REG_MPP_OUT_DRV_REG);  	reg |= (1 << 7); diff --git a/arch/arm/cpu/armv7/at91/sama5d3_devices.c b/arch/arm/cpu/armv7/at91/sama5d3_devices.c index e55e1c660..51f0a6dff 100644 --- a/arch/arm/cpu/armv7/at91/sama5d3_devices.c +++ b/arch/arm/cpu/armv7/at91/sama5d3_devices.c @@ -202,3 +202,15 @@ void at91_lcd_hw_init(void)  	at91_periph_clk_enable(ATMEL_ID_LCDC);  }  #endif + +#ifdef CONFIG_USB_GADGET_ATMEL_USBA +void at91_udp_hw_init(void) +{ +	struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC; + +	/* Enable UPLL clock */ +	writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr); +	/* Enable UDPHS clock */ +	at91_periph_clk_enable(ATMEL_ID_UDPHS); +} +#endif diff --git a/arch/arm/cpu/armv7/exynos/clock.c b/arch/arm/cpu/armv7/exynos/clock.c index 0cb1a61aa..36fedd630 100644 --- a/arch/arm/cpu/armv7/exynos/clock.c +++ b/arch/arm/cpu/armv7/exynos/clock.c @@ -282,6 +282,9 @@ static unsigned long exynos5_get_periph_rate(int peripheral)  		src = readl(&clk->src_peric0);  		div = readl(&clk->div_peric3);  		break; +	case PERIPH_ID_I2S0: +		src = readl(&clk->src_mau); +		div = readl(&clk->div_mau);  	case PERIPH_ID_SPI0:  	case PERIPH_ID_SPI1:  		src = readl(&clk->src_peric1); @@ -1146,17 +1149,29 @@ int exynos5_set_epll_clk(unsigned long rate)  	return 0;  } -void exynos5_set_i2s_clk_source(void) +int exynos5_set_i2s_clk_source(unsigned int i2s_id)  {  	struct exynos5_clock *clk =  		(struct exynos5_clock *)samsung_get_base_clock(); +	unsigned int *audio_ass = (unsigned int *)samsung_get_base_audio_ass(); -	clrsetbits_le32(&clk->src_peric1, AUDIO1_SEL_MASK, -			(CLK_SRC_SCLK_EPLL)); +	if (i2s_id == 0) { +		setbits_le32(&clk->src_top2, CLK_SRC_MOUT_EPLL); +		clrsetbits_le32(&clk->src_mau, AUDIO0_SEL_MASK, +				(CLK_SRC_SCLK_EPLL)); +		setbits_le32(audio_ass, AUDIO_CLKMUX_ASS); +	} else if (i2s_id == 1) { +		clrsetbits_le32(&clk->src_peric1, AUDIO1_SEL_MASK, +				(CLK_SRC_SCLK_EPLL)); +	} else { +		return -1; +	} +	return 0;  }  int exynos5_set_i2s_clk_prescaler(unsigned int src_frq, -					unsigned int dst_frq) +				  unsigned int dst_frq, +				  unsigned int i2s_id)  {  	struct exynos5_clock *clk =  		(struct exynos5_clock *)samsung_get_base_clock(); @@ -1169,13 +1184,27 @@ int exynos5_set_i2s_clk_prescaler(unsigned int src_frq,  	}  	div = (src_frq / dst_frq); -	if (div > AUDIO_1_RATIO_MASK) { -		debug("%s: Frequency ratio is out of range\n", __func__); -		debug("src frq = %d des frq = %d ", src_frq, dst_frq); +	if (i2s_id == 0) { +		if (div > AUDIO_0_RATIO_MASK) { +			debug("%s: Frequency ratio is out of range\n", +			      __func__); +			debug("src frq = %d des frq = %d ", src_frq, dst_frq); +			return -1; +		} +		clrsetbits_le32(&clk->div_mau, AUDIO_0_RATIO_MASK, +				(div & AUDIO_0_RATIO_MASK)); +	} else if(i2s_id == 1) { +		if (div > AUDIO_1_RATIO_MASK) { +			debug("%s: Frequency ratio is out of range\n", +			      __func__); +			debug("src frq = %d des frq = %d ", src_frq, dst_frq); +			return -1; +		} +		clrsetbits_le32(&clk->div_peric4, AUDIO_1_RATIO_MASK, +				(div & AUDIO_1_RATIO_MASK)); +	} else {  		return -1;  	} -	clrsetbits_le32(&clk->div_peric4, AUDIO_1_RATIO_MASK, -				(div & AUDIO_1_RATIO_MASK));  	return 0;  } @@ -1415,19 +1444,21 @@ int set_spi_clk(int periph_id, unsigned int rate)  		return 0;  } -int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq) +int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq, +			  unsigned int i2s_id)  { -  	if (cpu_is_exynos5()) -		return exynos5_set_i2s_clk_prescaler(src_frq, dst_frq); +		return exynos5_set_i2s_clk_prescaler(src_frq, dst_frq, i2s_id);  	else  		return 0;  } -void set_i2s_clk_source(void) +int set_i2s_clk_source(unsigned int i2s_id)  {  	if (cpu_is_exynos5()) -		exynos5_set_i2s_clk_source(); +		return exynos5_set_i2s_clk_source(i2s_id); +	else +		return 0;  }  int set_epll_clk(unsigned long rate) diff --git a/arch/arm/cpu/armv7/exynos/pinmux.c b/arch/arm/cpu/armv7/exynos/pinmux.c index 1b05ebfd7..8002bce79 100644 --- a/arch/arm/cpu/armv7/exynos/pinmux.c +++ b/arch/arm/cpu/armv7/exynos/pinmux.c @@ -220,10 +220,20 @@ static void exynos5_i2s_config(int peripheral)  {  	int i;  	struct exynos5_gpio_part1 *gpio1 = -		(struct exynos5_gpio_part1 *) samsung_get_base_gpio_part1(); +		(struct exynos5_gpio_part1 *)samsung_get_base_gpio_part1(); +	struct exynos5_gpio_part4 *gpio4 = +		(struct exynos5_gpio_part4 *)samsung_get_base_gpio_part4(); -	for (i = 0; i < 5; i++) -		s5p_gpio_cfg_pin(&gpio1->b0, i, GPIO_FUNC(0x02)); +	switch (peripheral) { +	case PERIPH_ID_I2S0: +		for (i = 0; i < 5; i++) +			s5p_gpio_cfg_pin(&gpio4->z, i, GPIO_FUNC(0x02)); +		break; +	case PERIPH_ID_I2S1: +		for (i = 0; i < 5; i++) +			s5p_gpio_cfg_pin(&gpio1->b0, i, GPIO_FUNC(0x02)); +		break; +	}  }  void exynos5_spi_config(int peripheral) @@ -296,6 +306,7 @@ static int exynos5_pinmux_config(int peripheral, int flags)  	case PERIPH_ID_I2C7:  		exynos5_i2c_config(peripheral, flags);  		break; +	case PERIPH_ID_I2S0:  	case PERIPH_ID_I2S1:  		exynos5_i2s_config(peripheral);  		break; @@ -463,11 +474,11 @@ static int exynos4_pinmux_config(int peripheral, int flags)  int exynos_pinmux_config(int peripheral, int flags)  { -	if (cpu_is_exynos5()) +	if (cpu_is_exynos5()) {  		return exynos5_pinmux_config(peripheral, flags); -	else if (cpu_is_exynos4()) +	} else if (cpu_is_exynos4()) {  		return exynos4_pinmux_config(peripheral, flags); -	else { +	} else {  		debug("pinmux functionality not supported\n");  		return -1;  	} diff --git a/arch/arm/cpu/armv7/nonsec_virt.S b/arch/arm/cpu/armv7/nonsec_virt.S index 358348ffa..24b4c18bd 100644 --- a/arch/arm/cpu/armv7/nonsec_virt.S +++ b/arch/arm/cpu/armv7/nonsec_virt.S @@ -3,23 +3,7 @@   *   * Copyright (c) 2013	Andre Przywara <andre.przywara@linaro.org>   * - * See file CREDITS for list of people who contributed to this - * project. - * - * 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; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	 See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * SPDX-License-Identifier:	GPL-2.0+   */  #include <config.h> diff --git a/arch/arm/cpu/armv7/omap5/hw_data.c b/arch/arm/cpu/armv7/omap5/hw_data.c index fbbc48662..a1b249e73 100644 --- a/arch/arm/cpu/armv7/omap5/hw_data.c +++ b/arch/arm/cpu/armv7/omap5/hw_data.c @@ -170,7 +170,7 @@ static const struct dpll_params per_dpll_params_768mhz_es2[NUM_SYS_CLKS] = {  static const struct dpll_params per_dpll_params_768mhz_dra7xx[NUM_SYS_CLKS] = {  	{32, 0, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1},		/* 12 MHz   */ -	{96, 4, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1},		/* 20 MHz   */ +	{96, 4, 4, 1, 3, 4, 4, 2, -1, -1, -1, -1},		/* 20 MHz   */  	{160, 6, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1},		/* 16.8 MHz */  	{20, 0, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1},		/* 19.2 MHz */  	{192, 12, 4, 1, 3, 4, 10, 2, -1, -1, -1, -1},		/* 26 MHz   */ @@ -426,6 +426,10 @@ void enable_basic_clocks(void)  #ifdef CONFIG_DRIVER_TI_CPSW  		(*prcm)->cm_gmac_gmac_clkctrl,  #endif + +#ifdef CONFIG_TI_QSPI +		(*prcm)->cm_l4per_qspi_clkctrl, +#endif  		0  	}; @@ -454,6 +458,10 @@ void enable_basic_clocks(void)  			 clk_modules_explicit_en_essential,  			 1); +#ifdef CONFIG_TI_QSPI +	setbits_le32((*prcm)->cm_l4per_qspi_clkctrl, (1<<24)); +#endif +  	/* Enable SCRM OPT clocks for PER and CORE dpll */  	setbits_le32((*prcm)->cm_wkupaon_scrm_clkctrl,  			OPTFCLKEN_SCRM_PER_MASK); diff --git a/arch/arm/cpu/armv7/omap5/prcm-regs.c b/arch/arm/cpu/armv7/omap5/prcm-regs.c index 5a3d52c11..7a7caded0 100644 --- a/arch/arm/cpu/armv7/omap5/prcm-regs.c +++ b/arch/arm/cpu/armv7/omap5/prcm-regs.c @@ -921,6 +921,7 @@ struct prcm_regs const dra7xx_prcm = {  	.cm_l4per_gpio8_clkctrl			= 0x4a009818,  	.cm_l4per_mmcsd3_clkctrl		= 0x4a009820,  	.cm_l4per_mmcsd4_clkctrl		= 0x4a009828, +	.cm_l4per_qspi_clkctrl			= 0x4a009838,  	.cm_l4per_uart1_clkctrl			= 0x4a009840,  	.cm_l4per_uart2_clkctrl			= 0x4a009848,  	.cm_l4per_uart3_clkctrl			= 0x4a009850, diff --git a/arch/arm/cpu/armv7/virt-v7.c b/arch/arm/cpu/armv7/virt-v7.c index 6de7fe781..2cd604f97 100644 --- a/arch/arm/cpu/armv7/virt-v7.c +++ b/arch/arm/cpu/armv7/virt-v7.c @@ -1,28 +1,12 @@  /*   * (C) Copyright 2013 - * Andre Przywara, Linaro + * Andre Przywara, Linaro <andre.przywara@linaro.org>   *   * Routines to transition ARMv7 processors from secure into non-secure state   * and from non-secure SVC into HYP mode   * needed to enable ARMv7 virtualization for current hypervisors   * - * See file CREDITS for list of people who contributed to this - * project. - * - * 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; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * SPDX-License-Identifier:	GPL-2.0+   */  #include <common.h> diff --git a/arch/arm/dts/exynos5250.dtsi b/arch/arm/dts/exynos5250.dtsi index 4fff5e369..1c5474f40 100644 --- a/arch/arm/dts/exynos5250.dtsi +++ b/arch/arm/dts/exynos5250.dtsi @@ -93,9 +93,28 @@  		interrupts = <0 63 0>;  	}; +	sound@3830000 { +		compatible = "samsung,exynos-sound"; +		reg = <0x3830000 0x50>; +		samsung,i2s-epll-clock-frequency = <192000000>; +		samsung,i2s-sampling-rate = <48000>; +		samsung,i2s-bits-per-sample = <16>; +		samsung,i2s-channels = <2>; +		samsung,i2s-lr-clk-framesize = <256>; +		samsung,i2s-bit-clk-framesize = <32>; +		samsung,i2s-id = <0>; +	}; +  	sound@12d60000 {  		compatible = "samsung,exynos-sound";  		reg = <0x12d60000 0x20>; +		samsung,i2s-epll-clock-frequency = <192000000>; +		samsung,i2s-sampling-rate = <48000>; +		samsung,i2s-bits-per-sample = <16>; +		samsung,i2s-channels = <2>; +		samsung,i2s-lr-clk-framesize = <256>; +		samsung,i2s-bit-clk-framesize = <32>; +		samsung,i2s-id = <1>;  	};  	spi@12d20000 { diff --git a/arch/arm/include/asm/arch-at91/at91_common.h b/arch/arm/include/asm/arch-at91/at91_common.h index 9f54fddce..abcb97d10 100644 --- a/arch/arm/include/asm/arch-at91/at91_common.h +++ b/arch/arm/include/asm/arch-at91/at91_common.h @@ -19,6 +19,7 @@ void at91_serial2_hw_init(void);  void at91_seriald_hw_init(void);  void at91_spi0_hw_init(unsigned long cs_mask);  void at91_spi1_hw_init(unsigned long cs_mask); +void at91_udp_hw_init(void);  void at91_uhp_hw_init(void);  void at91_lcd_hw_init(void); diff --git a/arch/arm/include/asm/arch-at91/atmel_usba_udc.h b/arch/arm/include/asm/arch-at91/atmel_usba_udc.h new file mode 100644 index 000000000..6f540d23a --- /dev/null +++ b/arch/arm/include/asm/arch-at91/atmel_usba_udc.h @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2005-2013 Atmel Corporation + *			   Bo Shen <voice.shen@atmel.com> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#ifndef __ATMEL_USBA_UDC_H__ +#define __ATMEL_USBA_UDC_H__ + +#include <linux/usb/atmel_usba_udc.h> + +#define EP(nam, idx, maxpkt, maxbk, dma, isoc)		\ +	[idx] = {					\ +		.name	= nam,				\ +		.index	= idx,				\ +		.fifo_size	= maxpkt,		\ +		.nr_banks	= maxbk,		\ +		.can_dma	= dma,			\ +		.can_isoc	= isoc,			\ +	} + +#if defined(CONFIG_AT91SAM9G45) || defined(CONFIG_AT91SAM9M10G45) || \ +	defined(CONFIG_AT91SAM9X5) +static struct usba_ep_data usba_udc_ep[] = { +	EP("ep0", 0, 64, 1, 0, 0), +	EP("ep1", 1, 1024, 2, 1, 1), +	EP("ep2", 2, 1024, 2, 1, 1), +	EP("ep3", 3, 1024, 3, 1, 0), +	EP("ep4", 4, 1024, 3, 1, 0), +	EP("ep5", 5, 1024, 3, 1, 1), +	EP("ep6", 6, 1024, 3, 1, 1), +}; +#elif defined(CONFIG_SAMA5D3) +static struct usba_ep_data usba_udc_ep[] = { +	EP("ep0", 0, 64, 1, 0, 0), +	EP("ep1", 1, 1024, 3, 1, 0), +	EP("ep2", 2, 1024, 3, 1, 0), +	EP("ep3", 3, 1024, 2, 1, 0), +	EP("ep4", 4, 1024, 2, 1, 0), +	EP("ep5", 5, 1024, 2, 1, 0), +	EP("ep6", 6, 1024, 2, 1, 0), +	EP("ep7", 7, 1024, 2, 1, 0), +	EP("ep8", 8, 1024, 2, 0, 0), +	EP("ep9", 9, 1024, 2, 0, 0), +	EP("ep10", 10, 1024, 2, 0, 0), +	EP("ep11", 11, 1024, 2, 0, 0), +	EP("ep12", 12, 1024, 2, 0, 0), +	EP("ep13", 13, 1024, 2, 0, 0), +	EP("ep14", 14, 1024, 2, 0, 0), +	EP("ep15", 15, 1024, 2, 0, 0), +}; +#else +# error "NO usba_udc_ep defined" +#endif + +#undef EP + +struct usba_platform_data pdata = { +	.num_ep	= ARRAY_SIZE(usba_udc_ep), +	.ep	= usba_udc_ep, +}; + +#endif diff --git a/arch/arm/include/asm/arch-at91/sama5d3.h b/arch/arm/include/asm/arch-at91/sama5d3.h index fefee5ed2..123a627cc 100644 --- a/arch/arm/include/asm/arch-at91/sama5d3.h +++ b/arch/arm/include/asm/arch-at91/sama5d3.h @@ -120,7 +120,7 @@  #define ATMEL_BASE_USART3	0xf8024000  #define ATMEL_BASE_UART1	0xf8028000  #define ATMEL_BASE_EMAC		0xf802c000 -#define ATMEL_BASE_UDHPS	0xf8030000 +#define ATMEL_BASE_UDPHS	0xf8030000  #define ATMEL_BASE_SHA		0xf8034000  #define ATMEL_BASE_AES		0xf8038000  #define ATMEL_BASE_TDES		0xf803c000 diff --git a/arch/arm/include/asm/arch-exynos/clk.h b/arch/arm/include/asm/arch-exynos/clk.h index 71075bd53..1d6fa9370 100644 --- a/arch/arm/include/asm/arch-exynos/clk.h +++ b/arch/arm/include/asm/arch-exynos/clk.h @@ -31,8 +31,9 @@ void set_mmc_clk(int dev_index, unsigned int div);  unsigned long get_lcd_clk(void);  void set_lcd_clk(void);  void set_mipi_clk(void); -void set_i2s_clk_source(void); -int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq); +int set_i2s_clk_source(unsigned int i2s_id); +int set_i2s_clk_prescaler(unsigned int src_frq, unsigned int dst_frq, +				unsigned int i2s_id);  int set_epll_clk(unsigned long rate);  int set_spi_clk(int periph_id, unsigned int rate); diff --git a/arch/arm/include/asm/arch-exynos/clock.h b/arch/arm/include/asm/arch-exynos/clock.h index 2b97b9a04..cf26eeffc 100644 --- a/arch/arm/include/asm/arch-exynos/clock.h +++ b/arch/arm/include/asm/arch-exynos/clock.h @@ -876,8 +876,12 @@ struct set_epll_con_val {  #define AUDIO_0_RATIO_MASK		0x0f  #define AUDIO_1_RATIO_MASK		0x0f +#define AUDIO0_SEL_MASK			0xf  #define AUDIO1_SEL_MASK			0xf +  #define CLK_SRC_SCLK_EPLL		0x7 +#define CLK_SRC_MOUT_EPLL		(1<<12) +#define AUDIO_CLKMUX_ASS		(1<<0)  /* CON0 bit-fields */  #define EPLL_CON0_MDIV_MASK		0x1ff diff --git a/arch/arm/include/asm/arch-exynos/cpu.h b/arch/arm/include/asm/arch-exynos/cpu.h index cb924fba8..4b67191c0 100644 --- a/arch/arm/include/asm/arch-exynos/cpu.h +++ b/arch/arm/include/asm/arch-exynos/cpu.h @@ -50,6 +50,7 @@  #define EXYNOS4_SPI_ISP_BASE		DEVICE_NOT_AVAILABLE  #define EXYNOS4_ACE_SFR_BASE		DEVICE_NOT_AVAILABLE  #define EXYNOS4_DMC_PHY_BASE		DEVICE_NOT_AVAILABLE +#define EXYNOS4_AUDIOSS_BASE		DEVICE_NOT_AVAILABLE  /* EXYNOS4X12 */  #define EXYNOS4X12_GPIO_PART3_BASE	0x03860000 @@ -85,10 +86,12 @@  #define EXYNOS4X12_SPI_ISP_BASE		DEVICE_NOT_AVAILABLE  #define EXYNOS4X12_ACE_SFR_BASE		DEVICE_NOT_AVAILABLE  #define EXYNOS4X12_DMC_PHY_BASE		DEVICE_NOT_AVAILABLE +#define EXYNOS4X12_AUDIOSS_BASE		DEVICE_NOT_AVAILABLE  /* EXYNOS5 Common*/  #define EXYNOS5_I2C_SPACING		0x10000 +#define EXYNOS5_AUDIOSS_BASE		0x03810000  #define EXYNOS5_GPIO_PART4_BASE		0x03860000  #define EXYNOS5_PRO_ID			0x10000000  #define EXYNOS5_CLOCK_BASE		0x10010000 @@ -226,6 +229,7 @@ SAMSUNG_BASE(spi_isp, SPI_ISP_BASE)  SAMSUNG_BASE(tzpc, TZPC_BASE)  SAMSUNG_BASE(dmc_ctrl, DMC_CTRL_BASE)  SAMSUNG_BASE(dmc_phy, DMC_PHY_BASE) +SAMSUNG_BASE(audio_ass, AUDIOSS_BASE)  #endif  #endif	/* _EXYNOS4_CPU_H */ diff --git a/arch/arm/include/asm/arch-exynos/i2s-regs.h b/arch/arm/include/asm/arch-exynos/i2s-regs.h index 613b9b7a3..4a4a7a00b 100644 --- a/arch/arm/include/asm/arch-exynos/i2s-regs.h +++ b/arch/arm/include/asm/arch-exynos/i2s-regs.h @@ -8,10 +8,12 @@  #ifndef __I2S_REGS_H__  #define __I2S_REGS_H__ +#define CON_RESET		(1 << 31)  #define CON_TXFIFO_FULL		(1 << 8)  #define CON_TXCH_PAUSE		(1 << 4)  #define CON_ACTIVE		(1 << 0) +#define MOD_OP_CLK		(3 << 30)  #define MOD_BLCP_SHIFT		24  #define MOD_BLCP_16BIT		(0 << MOD_BLCP_SHIFT)  #define MOD_BLCP_8BIT		(1 << MOD_BLCP_SHIFT) @@ -24,6 +26,7 @@  #define MOD_BLC_MASK		(3 << 13)  #define MOD_SLAVE		(1 << 11) +#define MOD_RCLKSRC		(0 << 10)  #define MOD_MASK		(3 << 8)  #define MOD_LR_LLOW		(0 << 7)  #define MOD_LR_RLOW		(1 << 7) @@ -47,4 +50,7 @@  #define FIC_TXFLUSH		(1 << 15)  #define FIC_RXFLUSH		(1 << 7) +#define PSREN			(1 << 15) +#define PSVAL			(3 << 8) +  #endif /* __I2S_REGS_H__ */ diff --git a/arch/arm/include/asm/arch-exynos/periph.h b/arch/arm/include/asm/arch-exynos/periph.h index 995215598..64bd8b7c9 100644 --- a/arch/arm/include/asm/arch-exynos/periph.h +++ b/arch/arm/include/asm/arch-exynos/periph.h @@ -34,6 +34,7 @@ enum periph_id {  	PERIPH_ID_SDMMC1,  	PERIPH_ID_SDMMC2,  	PERIPH_ID_SDMMC3, +	PERIPH_ID_I2S0 = 98,  	PERIPH_ID_I2S1 = 99,  	/* Since following peripherals do diff --git a/arch/arm/include/asm/arch-exynos/spi.h b/arch/arm/include/asm/arch-exynos/spi.h index fb23aa69c..147c1a730 100644 --- a/arch/arm/include/asm/arch-exynos/spi.h +++ b/arch/arm/include/asm/arch-exynos/spi.h @@ -22,7 +22,7 @@ struct exynos_spi {  	unsigned int		rx_data;	/* 0x1c */  	unsigned int		pkt_cnt;	/* 0x20 */  	unsigned char		reserved2[4]; -	unsigned char		reserved3[4]; +	unsigned int		swap_cfg;	/* 0x28 */  	unsigned int		fb_clk;		/* 0x2c */  	unsigned char		padding[0xffd0];  }; @@ -62,5 +62,14 @@ struct exynos_spi {  /* Packet Count */  #define SPI_PACKET_CNT_EN	(1 << 16) +/* Swap config */ +#define SPI_TX_SWAP_EN		(1 << 0) +#define SPI_TX_BYTE_SWAP	(1 << 2) +#define SPI_TX_HWORD_SWAP	(1 << 3) +#define SPI_TX_BYTE_SWAP	(1 << 2) +#define SPI_RX_SWAP_EN		(1 << 4) +#define SPI_RX_BYTE_SWAP	(1 << 6) +#define SPI_RX_HWORD_SWAP	(1 << 7) +  #endif /* __ASSEMBLY__ */  #endif diff --git a/arch/arm/include/asm/arch-omap5/ehci.h b/arch/arm/include/asm/arch-omap5/ehci.h index 3921e4ab4..63aaa020d 100644 --- a/arch/arm/include/asm/arch-omap5/ehci.h +++ b/arch/arm/include/asm/arch-omap5/ehci.h @@ -2,20 +2,7 @@   * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com*   * Author: Govindraj R <govindraj.raja@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; either version 2 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * SPDX-License-Identifier: GPL-2.0+   */  #ifndef _EHCI_H diff --git a/arch/arm/include/asm/arch-omap5/omap.h b/arch/arm/include/asm/arch-omap5/omap.h index e9a51d340..414d37a5a 100644 --- a/arch/arm/include/asm/arch-omap5/omap.h +++ b/arch/arm/include/asm/arch-omap5/omap.h @@ -61,6 +61,9 @@  /* GPMC */  #define OMAP54XX_GPMC_BASE	0x50000000 +/* QSPI */ +#define QSPI_BASE		0x4B300000 +  /*   * Hardware Register Details   */ diff --git a/arch/arm/include/asm/arch-omap5/spl.h b/arch/arm/include/asm/arch-omap5/spl.h index fe8b0c01a..57f0de5ff 100644 --- a/arch/arm/include/asm/arch-omap5/spl.h +++ b/arch/arm/include/asm/arch-omap5/spl.h @@ -15,6 +15,7 @@  #define BOOT_DEVICE_MMC1        5  #define BOOT_DEVICE_MMC2        6  #define BOOT_DEVICE_MMC2_2	7 +#define BOOT_DEVICE_SPI		10  #define MMC_BOOT_DEVICES_START	BOOT_DEVICE_MMC1  #define MMC_BOOT_DEVICES_END	BOOT_DEVICE_MMC2_2 diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h index 61fee9f06..3a998cc10 100644 --- a/arch/arm/include/asm/omap_common.h +++ b/arch/arm/include/asm/omap_common.h @@ -266,6 +266,7 @@ struct prcm_regs {  	u32 cm_l4per_mmcsd4_clkctrl;  	u32 cm_l4per_msprohg_clkctrl;  	u32 cm_l4per_slimbus2_clkctrl; +	u32 cm_l4per_qspi_clkctrl;  	u32 cm_l4per_uart1_clkctrl;  	u32 cm_l4per_uart2_clkctrl;  	u32 cm_l4per_uart3_clkctrl; diff --git a/arch/powerpc/cpu/mpc85xx/cmd_errata.c b/arch/powerpc/cpu/mpc85xx/cmd_errata.c index eea264b15..c441bd2f5 100644 --- a/arch/powerpc/cpu/mpc85xx/cmd_errata.c +++ b/arch/powerpc/cpu/mpc85xx/cmd_errata.c @@ -252,6 +252,9 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])  #ifdef CONFIG_SYS_FSL_ERRATUM_A005812  	puts("Work-around for Erratum A-005812 enabled\n");  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A005125 +	puts("Work-around for Erratum A005125 enabled\n"); +#endif  #ifdef CONFIG_SYS_FSL_ERRATUM_I2C_A004447  	if ((SVR_SOC_VER(svr) == SVR_8548 && IS_SVR_REV(svr, 3, 1)) ||  	    (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV)) diff --git a/arch/powerpc/cpu/mpc85xx/start.S b/arch/powerpc/cpu/mpc85xx/start.S index ad57a9cfa..be4f4ae87 100644 --- a/arch/powerpc/cpu/mpc85xx/start.S +++ b/arch/powerpc/cpu/mpc85xx/start.S @@ -108,6 +108,14 @@ _start_e500:  	isync  2:  #endif +#ifdef CONFIG_SYS_FSL_ERRATUM_A005125 +	msync +	isync +	mfspr	r3, SPRN_HDBCR0 +	oris	r3, r3, 0x0080 +	mtspr	SPRN_HDBCR0, r3 +#endif +  #if defined(CONFIG_SECURE_BOOT) && defined(CONFIG_E500MC)  	/* ISBC uses L2 as stack. diff --git a/arch/powerpc/cpu/ppc4xx/4xx_pci.c b/arch/powerpc/cpu/ppc4xx/4xx_pci.c index 5584e0f3e..08781a1fb 100644 --- a/arch/powerpc/cpu/ppc4xx/4xx_pci.c +++ b/arch/powerpc/cpu/ppc4xx/4xx_pci.c @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   *   *  File Name:   405gp_pci.c   * diff --git a/arch/powerpc/cpu/ppc4xx/4xx_uart.c b/arch/powerpc/cpu/ppc4xx/4xx_uart.c index 50c28a0d3..c02058f79 100644 --- a/arch/powerpc/cpu/ppc4xx/4xx_uart.c +++ b/arch/powerpc/cpu/ppc4xx/4xx_uart.c @@ -5,7 +5,7 @@   * (C) Copyright 2010   * Stefan Roese, DENX Software Engineering, sr@denx.de.   * - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  #include <common.h> diff --git a/arch/powerpc/cpu/ppc4xx/miiphy.c b/arch/powerpc/cpu/ppc4xx/miiphy.c index e4a9db676..10147de08 100644 --- a/arch/powerpc/cpu/ppc4xx/miiphy.c +++ b/arch/powerpc/cpu/ppc4xx/miiphy.c @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  /*-----------------------------------------------------------------------------+    | diff --git a/arch/powerpc/cpu/ppc4xx/start.S b/arch/powerpc/cpu/ppc4xx/start.S index d9d8cbffa..38bbc5a9b 100644 --- a/arch/powerpc/cpu/ppc4xx/start.S +++ b/arch/powerpc/cpu/ppc4xx/start.S @@ -6,7 +6,7 @@   *  Copyright (c) 2008 Nuovation System Designs, LLC   *    Grant Erickson <gerickson@nuovations.com>   * - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  /* diff --git a/arch/powerpc/include/asm/config_mpc85xx.h b/arch/powerpc/include/asm/config_mpc85xx.h index 15e44de41..bec8966fd 100644 --- a/arch/powerpc/include/asm/config_mpc85xx.h +++ b/arch/powerpc/include/asm/config_mpc85xx.h @@ -34,6 +34,7 @@  #define CONFIG_SYS_PPC_E500_DEBUG_TLB	1  #define CONFIG_SYS_FSL_SEC_COMPAT	2  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_MPC8540)  #define CONFIG_MAX_CPUS			1 @@ -52,6 +53,7 @@  #define CONFIG_SYS_PPC_E500_DEBUG_TLB	0  #define CONFIG_SYS_FSL_SEC_COMPAT	2  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_MPC8548)  #define CONFIG_MAX_CPUS			1 @@ -67,6 +69,7 @@  #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM	5  #define CONFIG_SYS_FSL_RMU  #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM	2 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x00 @@ -108,6 +111,7 @@  #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM	5  #define CONFIG_SYS_FSL_RMU  #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM	2 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_MPC8572)  #define CONFIG_MAX_CPUS			2 @@ -117,6 +121,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_SYS_FSL_ERRATUM_DDR_115  #define CONFIG_SYS_FSL_ERRATUM_DDR111_DDR134 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1010)  #define CONFIG_MAX_CPUS			1 @@ -135,6 +140,7 @@  #define CONFIG_SYS_FSL_ERRATUM_P1010_A003549  #define CONFIG_SYS_FSL_ERRATUM_SEC_A003571  #define CONFIG_SYS_FSL_ERRATUM_IFC_A003399 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x10 @@ -149,6 +155,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_A005125  /* P1012 is single core version of P1021 */  #elif defined(CONFIG_P1012) @@ -164,6 +171,7 @@  #define QE_MURAM_SIZE			0x6000UL  #define MAX_QE_RISC			1  #define QE_NUM_OF_SNUM			28 +#define CONFIG_SYS_FSL_ERRATUM_A005125  /* P1013 is single core version of P1022 */  #elif defined(CONFIG_P1013) @@ -176,6 +184,7 @@  #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111  #define CONFIG_FSL_SATA_ERRATUM_A001 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1014)  #define CONFIG_MAX_CPUS			1 @@ -205,6 +214,7 @@  #define CONFIG_SYS_FM_MURAM_SIZE	0x10000  #define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v2.2"  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff600000 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1020)  #define CONFIG_MAX_CPUS			2 @@ -216,6 +226,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1021)  #define CONFIG_MAX_CPUS			2 @@ -230,6 +241,7 @@  #define QE_MURAM_SIZE			0x6000UL  #define MAX_QE_RISC			1  #define QE_NUM_OF_SNUM			28 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1022)  #define CONFIG_MAX_CPUS			2 @@ -241,6 +253,7 @@  #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111  #define CONFIG_FSL_SATA_ERRATUM_A001 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P1023)  #define CONFIG_MAX_CPUS			2 @@ -254,6 +267,7 @@  #define CONFIG_SYS_FM_MURAM_SIZE	0x10000  #define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v2.2"  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff600000 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x11 @@ -268,6 +282,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_SYS_FSL_ERRATUM_ELBC_A001  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_A005125  /* P1025 is lower end variant of P1021 */  #elif defined(CONFIG_P1025) @@ -283,6 +298,7 @@  #define QE_MURAM_SIZE			0x6000UL  #define MAX_QE_RISC			1  #define QE_NUM_OF_SNUM			28 +#define CONFIG_SYS_FSL_ERRATUM_A005125  /* P2010 is single core version of P2020 */  #elif defined(CONFIG_P2010) @@ -293,6 +309,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111  #define CONFIG_SYS_FSL_ERRATUM_ESDHC_A001 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_P2020)  #define CONFIG_MAX_CPUS			2 @@ -307,6 +324,7 @@  #define CONFIG_SYS_FSL_SRIO_IB_WIN_NUM	5  #define CONFIG_SYS_FSL_RMU  #define CONFIG_SYS_FSL_SRIO_MSG_UNIT_NUM	2 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_PPC_P2041) /* also supports P2040 */  #define CONFIG_SYS_FSL_QORIQ_CHASSIS1 @@ -506,6 +524,7 @@  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000  #define CONFIG_NAND_FSL_IFC  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #elif defined(CONFIG_BSC9132)  #define CONFIG_MAX_CPUS			2 @@ -525,6 +544,7 @@  #define CONFIG_SYS_FSL_ERRATUM_ESDHC111  #define CONFIG_SYS_FSL_ESDHC_P1010_BROKEN_SDCLK  #define CONFIG_SYS_FSL_PCIE_COMPAT	"fsl,qoriq-pcie-v2.2" +#define CONFIG_SYS_FSL_ERRATUM_A005125  #define CONFIG_SYS_FSL_ERRATUM_I2C_A004447  #define CONFIG_SYS_FSL_A004447_SVR_REV	0x11 @@ -658,6 +678,7 @@  #define CONFIG_NUM_DDR_CONTROLLERS	1  #define CONFIG_SYS_FSL_IFC_BANK_COUNT	8  #define CONFIG_SYS_CCSRBAR_DEFAULT	0xff700000 +#define CONFIG_SYS_FSL_ERRATUM_A005125  #else  #error Processor type not defined for this platform diff --git a/arch/powerpc/include/asm/ppc405.h b/arch/powerpc/include/asm/ppc405.h index 8bb342b92..f2ed16a21 100644 --- a/arch/powerpc/include/asm/ppc405.h +++ b/arch/powerpc/include/asm/ppc405.h @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  #ifndef	__PPC405_H__ diff --git a/arch/powerpc/include/asm/ppc440.h b/arch/powerpc/include/asm/ppc440.h index 0f5bc8d1c..0cfa88bff 100644 --- a/arch/powerpc/include/asm/ppc440.h +++ b/arch/powerpc/include/asm/ppc440.h @@ -9,7 +9,7 @@   * (C) Copyright 2010   * Stefan Roese, DENX Software Engineering, sr@denx.de.   * - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  #ifndef __PPC440_H__ diff --git a/arch/powerpc/include/asm/ppc4xx-emac.h b/arch/powerpc/include/asm/ppc4xx-emac.h index e6eb33222..76fa95ca3 100644 --- a/arch/powerpc/include/asm/ppc4xx-emac.h +++ b/arch/powerpc/include/asm/ppc4xx-emac.h @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  /*----------------------------------------------------------------------------+  | diff --git a/arch/powerpc/include/asm/ppc4xx-mal.h b/arch/powerpc/include/asm/ppc4xx-mal.h index d15290dc1..ef8b17446 100644 --- a/arch/powerpc/include/asm/ppc4xx-mal.h +++ b/arch/powerpc/include/asm/ppc4xx-mal.h @@ -1,6 +1,6 @@  /* include/mal.h, openbios_walnut, walnut_bios 8/6/99 08:48:40 */  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  /*----------------------------------------------------------------------------+  | diff --git a/arch/powerpc/include/asm/ppc4xx.h b/arch/powerpc/include/asm/ppc4xx.h index 8d703c663..e6a3bff07 100644 --- a/arch/powerpc/include/asm/ppc4xx.h +++ b/arch/powerpc/include/asm/ppc4xx.h @@ -1,5 +1,5 @@  /* - * SPDX-License-Identifier:	GPL-2.0	ibm-pibs + * SPDX-License-Identifier:	GPL-2.0	IBM-pibs   */  #ifndef	__PPC4XX_H__ |