Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0a6ba5f authored by Yong Shen's avatar Yong Shen Committed by Sascha Hauer
Browse files

ARM i.MX53 enable spi on EVK board



1. some macro definitions fix
2. add platform data for spi device
3. register spi clocks

Signed-off-by: default avatarYong Shen <yong.shen@freescale.com>
Signed-off-by: default avatarSascha Hauer <s.hauer@pengutronix.de>
parent 074cee92
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -126,6 +126,7 @@ config MACH_MX53_EVK
	select IMX_HAVE_PLATFORM_IMX_UART
	select IMX_HAVE_PLATFORM_IMX_I2C
	select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
	select IMX_HAVE_PLATFORM_SPI_IMX
	help
	  Include support for MX53 EVK platform. This includes specific
	  configurations for the board and its peripherals.
+14 −0
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@
#include <mach/iomux-mx53.h>

#define SMD_FEC_PHY_RST		IMX_GPIO_NR(7, 6)
#define EVK_ECSPI1_CS0		IMX_GPIO_NR(3, 19)
#define EVK_ECSPI1_CS1		IMX_GPIO_NR(2, 30)

#include "crm_regs.h"
#include "devices-imx53.h"
@@ -89,6 +91,16 @@ static struct fec_platform_data mx53_evk_fec_pdata = {
	.phy = PHY_INTERFACE_MODE_RMII,
};

static int mx53_evk_spi_cs[] = {
	EVK_ECSPI1_CS0,
	EVK_ECSPI1_CS1,
};

static const struct spi_imx_master mx53_evk_spi_data __initconst = {
	.chipselect     = mx53_evk_spi_cs,
	.num_chipselect = ARRAY_SIZE(mx53_evk_spi_cs),
};

static void __init mx53_evk_board_init(void)
{
	mxc_iomux_v3_setup_multiple_pads(mx53_evk_pads,
@@ -102,6 +114,8 @@ static void __init mx53_evk_board_init(void)

	imx53_add_sdhci_esdhc_imx(0, NULL);
	imx53_add_sdhci_esdhc_imx(1, NULL);

	imx53_add_ecspi(0, &mx53_evk_spi_data);
}

static void __init mx53_evk_timer_init(void)
+3 −0
Original line number Diff line number Diff line
@@ -1330,6 +1330,9 @@ static struct clk_lookup mx53_lookups[] = {
	_REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
	_REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk)
	_REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk)
	_REGISTER_CLOCK("imx53-ecspi.0", NULL, ecspi1_clk)
	_REGISTER_CLOCK("imx53-ecspi.1", NULL, ecspi2_clk)
	_REGISTER_CLOCK("imx53-cspi.0", NULL, cspi_clk)
};

static void clk_tree_init(void)
+4 −0
Original line number Diff line number Diff line
@@ -25,3 +25,7 @@ extern const struct imx_sdhci_esdhc_imx_data
imx53_sdhci_esdhc_imx_data[] __initconst;
#define imx53_add_sdhci_esdhc_imx(id, pdata)	\
	imx_add_sdhci_esdhc_imx(&imx53_sdhci_esdhc_imx_data[id], pdata)

extern const struct imx_spi_imx_data imx53_ecspi_data[] __initconst;
#define imx53_add_ecspi(id, pdata)	\
	imx_add_spi_imx(&imx53_ecspi_data[id], pdata)
+12 −0
Original line number Diff line number Diff line
@@ -81,6 +81,18 @@ const struct imx_spi_imx_data imx51_ecspi_data[] __initconst = {
};
#endif /* ifdef CONFIG_SOC_IMX51 */

#ifdef CONFIG_SOC_IMX53
const struct imx_spi_imx_data imx53_cspi_data __initconst =
	imx_spi_imx_data_entry_single(MX53, CSPI, "imx53-cspi", 0, , SZ_4K);

const struct imx_spi_imx_data imx53_ecspi_data[] __initconst = {
#define imx53_ecspi_data_entry(_id, _hwid)				\
	imx_spi_imx_data_entry(MX53, ECSPI, "imx53-ecspi", _id, _hwid, SZ_4K)
	imx53_ecspi_data_entry(0, 1),
	imx53_ecspi_data_entry(1, 2),
};
#endif /* ifdef CONFIG_SOC_IMX53 */

struct platform_device *__init imx_add_spi_imx(
		const struct imx_spi_imx_data *data,
		const struct spi_imx_master *pdata)
Loading