i.MX cleanup for 4.9:
- Drop i.MX1 board files and make i.MX1 a DT only platform. - Remove obsolete ENET initialization code for TX28 board, since FEC driver handles those setup well now. - A couple of cleanups on i.MX31 IOMUX headers to drop duplications - A few other random and trivial cleanups -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJX1k9/AAoJEFBXWFqHsHzOcXoH/1OqY6dSOI7MrzwocYhXE+mI eqgQ/5/N3EsaA01NQpdreffGfa1FlNwIwZ6+9XY4EateQt2U/dPKWX0xDkMpo8c+ CNOciiZ4bZ811w+7NfYiEZ0BTIm2ouFuNJLbadPb6tl+0ssUGvEEelH/UbMjT331 DkzMWaqOv6W2ldKT++UF+IrDCGVUI55leqM5WrQDK8qFkBn6KdnYeFG3+4P58hZ3 XhXuv00UJUxB1L1E3TPG+1MVxDD8G5ge4ZXtIxzECgyAbAbQboyNkXai+qcr4dN9 XIleT0YCYtXSEsvEkfWoU3GjZC9pSZmUFhmlWtWmkuFh9H2zAalRZKNVEBNGpQQ= =qHgE -----END PGP SIGNATURE----- Merge tag 'imx-cleanup-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into next/cleanup Pull "i.MX cleanup for 4.9" from Shawn Guo: - Drop i.MX1 board files and make i.MX1 a DT only platform. - Remove obsolete ENET initialization code for TX28 board, since FEC driver handles those setup well now. - A couple of cleanups on i.MX31 IOMUX headers to drop duplications - A few other random and trivial cleanups * tag 'imx-cleanup-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux: ARM: imx: (trivial) fix typo and grammar ARM: imx: use IS_ENABLED() instead of checking for built-in or module ARM: imx: remove platform-mxc_rnga ARM: imx: no need to select SMP_ON_UP explicitly ARM: i.MX: Move SOC_IMX1 into 'Device tree only' ARM: i.MX: Remove i.MX1 non-DT support ARM: i.MX: Remove i.MX1 Synertronixx SCB9328 board support ARM: i.MX: Remove i.MX1 Armadeus APF9328 board support ARM: mxs: remove obsolete startup code for TX28 ARM: i.MX31 iomux: remove duplicates with alternate name ARM: i.MX31 iomux: remove plain duplicates
This commit is contained in:
commit
90793df938
|
@ -22,14 +22,13 @@ CONFIG_ARCH_MULTI_V4T=y
|
||||||
CONFIG_ARCH_MULTI_V5=y
|
CONFIG_ARCH_MULTI_V5=y
|
||||||
# CONFIG_ARCH_MULTI_V7 is not set
|
# CONFIG_ARCH_MULTI_V7 is not set
|
||||||
CONFIG_ARCH_MXC=y
|
CONFIG_ARCH_MXC=y
|
||||||
CONFIG_MACH_SCB9328=y
|
|
||||||
CONFIG_MACH_APF9328=y
|
|
||||||
CONFIG_MACH_MX21ADS=y
|
CONFIG_MACH_MX21ADS=y
|
||||||
CONFIG_MACH_MX27ADS=y
|
CONFIG_MACH_MX27ADS=y
|
||||||
CONFIG_MACH_MX27_3DS=y
|
CONFIG_MACH_MX27_3DS=y
|
||||||
CONFIG_MACH_IMX27_VISSTRIM_M10=y
|
CONFIG_MACH_IMX27_VISSTRIM_M10=y
|
||||||
CONFIG_MACH_PCA100=y
|
CONFIG_MACH_PCA100=y
|
||||||
CONFIG_MACH_IMX27_DT=y
|
CONFIG_MACH_IMX27_DT=y
|
||||||
|
CONFIG_SOC_IMX1=y
|
||||||
CONFIG_SOC_IMX25=y
|
CONFIG_SOC_IMX25=y
|
||||||
CONFIG_PREEMPT=y
|
CONFIG_PREEMPT=y
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
|
|
|
@ -20,9 +20,7 @@ CONFIG_INTEGRATOR_CM720T=y
|
||||||
CONFIG_INTEGRATOR_CM920T=y
|
CONFIG_INTEGRATOR_CM920T=y
|
||||||
CONFIG_INTEGRATOR_CM922T_XA10=y
|
CONFIG_INTEGRATOR_CM922T_XA10=y
|
||||||
CONFIG_ARCH_MXC=y
|
CONFIG_ARCH_MXC=y
|
||||||
CONFIG_MACH_SCB9328=y
|
CONFIG_SOC_IMX1=y
|
||||||
CONFIG_MACH_APF9328=y
|
|
||||||
CONFIG_MACH_IMX1_DT=y
|
|
||||||
CONFIG_ARCH_NSPIRE=y
|
CONFIG_ARCH_NSPIRE=y
|
||||||
CONFIG_AEABI=y
|
CONFIG_AEABI=y
|
||||||
# CONFIG_ATAGS is not set
|
# CONFIG_ATAGS is not set
|
||||||
|
|
|
@ -64,13 +64,6 @@ config IMX_HAVE_IOMUX_V1
|
||||||
config ARCH_MXC_IOMUX_V3
|
config ARCH_MXC_IOMUX_V3
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config SOC_IMX1
|
|
||||||
bool
|
|
||||||
select CPU_ARM920T
|
|
||||||
select IMX_HAVE_IOMUX_V1
|
|
||||||
select MXC_AVIC
|
|
||||||
select PINCTRL_IMX1
|
|
||||||
|
|
||||||
config SOC_IMX21
|
config SOC_IMX21
|
||||||
bool
|
bool
|
||||||
select CPU_ARM926T
|
select CPU_ARM926T
|
||||||
|
@ -88,7 +81,6 @@ config SOC_IMX31
|
||||||
bool
|
bool
|
||||||
select CPU_V6
|
select CPU_V6
|
||||||
select MXC_AVIC
|
select MXC_AVIC
|
||||||
select SMP_ON_UP if SMP
|
|
||||||
|
|
||||||
config SOC_IMX35
|
config SOC_IMX35
|
||||||
bool
|
bool
|
||||||
|
@ -96,35 +88,6 @@ config SOC_IMX35
|
||||||
select HAVE_EPIT
|
select HAVE_EPIT
|
||||||
select MXC_AVIC
|
select MXC_AVIC
|
||||||
select PINCTRL_IMX35
|
select PINCTRL_IMX35
|
||||||
select SMP_ON_UP if SMP
|
|
||||||
|
|
||||||
if ARCH_MULTI_V4T
|
|
||||||
|
|
||||||
comment "MX1 platforms:"
|
|
||||||
|
|
||||||
config MACH_SCB9328
|
|
||||||
bool "Synertronixx scb9328"
|
|
||||||
select IMX_HAVE_PLATFORM_IMX_UART
|
|
||||||
select SOC_IMX1
|
|
||||||
help
|
|
||||||
Say Y here if you are using a Synertronixx scb9328 board
|
|
||||||
|
|
||||||
config MACH_APF9328
|
|
||||||
bool "APF9328"
|
|
||||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
|
||||||
select IMX_HAVE_PLATFORM_IMX_UART
|
|
||||||
select SOC_IMX1
|
|
||||||
help
|
|
||||||
Say Yes here if you are using the Armadeus APF9328 development board
|
|
||||||
|
|
||||||
config MACH_IMX1_DT
|
|
||||||
bool "Support i.MX1 platforms from device tree"
|
|
||||||
select SOC_IMX1
|
|
||||||
help
|
|
||||||
Include support for Freescale i.MX1 based platforms
|
|
||||||
using the device tree for discovery.
|
|
||||||
|
|
||||||
endif
|
|
||||||
|
|
||||||
if ARCH_MULTI_V5
|
if ARCH_MULTI_V5
|
||||||
|
|
||||||
|
@ -461,6 +424,18 @@ endif
|
||||||
|
|
||||||
comment "Device tree only"
|
comment "Device tree only"
|
||||||
|
|
||||||
|
if ARCH_MULTI_V4T
|
||||||
|
|
||||||
|
config SOC_IMX1
|
||||||
|
bool "i.MX1 support"
|
||||||
|
select CPU_ARM920T
|
||||||
|
select MXC_AVIC
|
||||||
|
select PINCTRL_IMX1
|
||||||
|
help
|
||||||
|
This enables support for Freescale i.MX1 processor
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
if ARCH_MULTI_V5
|
if ARCH_MULTI_V5
|
||||||
|
|
||||||
config SOC_IMX25
|
config SOC_IMX25
|
||||||
|
@ -585,7 +560,6 @@ config SOC_VF610
|
||||||
select ARM_GIC if ARCH_MULTI_V7
|
select ARM_GIC if ARCH_MULTI_V7
|
||||||
select PINCTRL_VF610
|
select PINCTRL_VF610
|
||||||
select PL310_ERRATA_769419 if CACHE_L2X0
|
select PL310_ERRATA_769419 if CACHE_L2X0
|
||||||
select SMP_ON_UP if SMP
|
|
||||||
|
|
||||||
help
|
help
|
||||||
This enables support for Freescale Vybrid VF610 processor.
|
This enables support for Freescale Vybrid VF610 processor.
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
obj-y := cpu.o system.o irq-common.o
|
obj-y := cpu.o system.o irq-common.o
|
||||||
|
|
||||||
obj-$(CONFIG_SOC_IMX1) += mm-imx1.o
|
|
||||||
obj-$(CONFIG_SOC_IMX21) += mm-imx21.o
|
obj-$(CONFIG_SOC_IMX21) += mm-imx21.o
|
||||||
|
|
||||||
obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
|
obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
|
||||||
|
@ -35,11 +34,6 @@ obj-y += ssi-fiq.o
|
||||||
obj-y += ssi-fiq-ksym.o
|
obj-y += ssi-fiq-ksym.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# i.MX1 based machines
|
|
||||||
obj-$(CONFIG_MACH_SCB9328) += mach-scb9328.o
|
|
||||||
obj-$(CONFIG_MACH_APF9328) += mach-apf9328.o
|
|
||||||
obj-$(CONFIG_MACH_IMX1_DT) += imx1-dt.o
|
|
||||||
|
|
||||||
# i.MX21 based machines
|
# i.MX21 based machines
|
||||||
obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
|
obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
|
||||||
|
|
||||||
|
@ -93,6 +87,7 @@ obj-$(CONFIG_SOC_IMX53) += suspend-imx53.o
|
||||||
endif
|
endif
|
||||||
obj-$(CONFIG_SOC_IMX6) += pm-imx6.o
|
obj-$(CONFIG_SOC_IMX6) += pm-imx6.o
|
||||||
|
|
||||||
|
obj-$(CONFIG_SOC_IMX1) += mach-imx1.o
|
||||||
obj-$(CONFIG_SOC_IMX50) += mach-imx50.o
|
obj-$(CONFIG_SOC_IMX50) += mach-imx50.o
|
||||||
obj-$(CONFIG_SOC_IMX51) += mach-imx51.o
|
obj-$(CONFIG_SOC_IMX51) += mach-imx51.o
|
||||||
obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
|
obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
|
||||||
|
|
|
@ -21,29 +21,24 @@ struct device_node;
|
||||||
enum mxc_cpu_pwr_mode;
|
enum mxc_cpu_pwr_mode;
|
||||||
struct of_device_id;
|
struct of_device_id;
|
||||||
|
|
||||||
void mx1_map_io(void);
|
|
||||||
void mx21_map_io(void);
|
void mx21_map_io(void);
|
||||||
void mx27_map_io(void);
|
void mx27_map_io(void);
|
||||||
void mx31_map_io(void);
|
void mx31_map_io(void);
|
||||||
void mx35_map_io(void);
|
void mx35_map_io(void);
|
||||||
void imx1_init_early(void);
|
|
||||||
void imx21_init_early(void);
|
void imx21_init_early(void);
|
||||||
void imx27_init_early(void);
|
void imx27_init_early(void);
|
||||||
void imx31_init_early(void);
|
void imx31_init_early(void);
|
||||||
void imx35_init_early(void);
|
void imx35_init_early(void);
|
||||||
void mxc_init_irq(void __iomem *);
|
void mxc_init_irq(void __iomem *);
|
||||||
void mx1_init_irq(void);
|
|
||||||
void mx21_init_irq(void);
|
void mx21_init_irq(void);
|
||||||
void mx27_init_irq(void);
|
void mx27_init_irq(void);
|
||||||
void mx31_init_irq(void);
|
void mx31_init_irq(void);
|
||||||
void mx35_init_irq(void);
|
void mx35_init_irq(void);
|
||||||
void imx1_soc_init(void);
|
|
||||||
void imx21_soc_init(void);
|
void imx21_soc_init(void);
|
||||||
void imx27_soc_init(void);
|
void imx27_soc_init(void);
|
||||||
void imx31_soc_init(void);
|
void imx31_soc_init(void);
|
||||||
void imx35_soc_init(void);
|
void imx35_soc_init(void);
|
||||||
void epit_timer_init(void __iomem *base, int irq);
|
void epit_timer_init(void __iomem *base, int irq);
|
||||||
int mx1_clocks_init(unsigned long fref);
|
|
||||||
int mx21_clocks_init(unsigned long lref, unsigned long fref);
|
int mx21_clocks_init(unsigned long lref, unsigned long fref);
|
||||||
int mx27_clocks_init(unsigned long fref);
|
int mx27_clocks_init(unsigned long fref);
|
||||||
int mx31_clocks_init(unsigned long fref);
|
int mx31_clocks_init(unsigned long fref);
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2010 Pengutronix
|
|
||||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
#include "devices/devices-common.h"
|
|
||||||
|
|
||||||
extern const struct imx_imx_fb_data imx1_imx_fb_data;
|
|
||||||
#define imx1_add_imx_fb(pdata) \
|
|
||||||
imx_add_imx_fb(&imx1_imx_fb_data, pdata)
|
|
||||||
|
|
||||||
extern const struct imx_imx_i2c_data imx1_imx_i2c_data;
|
|
||||||
#define imx1_add_imx_i2c(pdata) \
|
|
||||||
imx_add_imx_i2c(&imx1_imx_i2c_data, pdata)
|
|
||||||
|
|
||||||
extern const struct imx_imx_uart_3irq_data imx1_imx_uart_data[];
|
|
||||||
#define imx1_add_imx_uart(id, pdata) \
|
|
||||||
imx_add_imx_uart_3irq(&imx1_imx_uart_data[id], pdata)
|
|
||||||
#define imx1_add_imx_uart0(pdata) imx1_add_imx_uart(0, pdata)
|
|
||||||
#define imx1_add_imx_uart1(pdata) imx1_add_imx_uart(1, pdata)
|
|
||||||
|
|
||||||
extern const struct imx_spi_imx_data imx1_cspi_data[];
|
|
||||||
#define imx1_add_cspi(id, pdata) \
|
|
||||||
imx_add_spi_imx(&imx1_cspi_data[id], pdata)
|
|
||||||
|
|
||||||
#define imx1_add_spi_imx0(pdata) imx1_add_cspi(0, pdata)
|
|
||||||
#define imx1_add_spi_imx1(pdata) imx1_add_cspi(1, pdata)
|
|
|
@ -20,7 +20,6 @@ obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_CAMERA) += platform-mx2-camera.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI) += platform-mxc-ehci.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI) += platform-mxc-ehci.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MMC) += platform-mxc-mmc.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MMC) += platform-mxc-mmc.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RNGA) += platform-mxc_rnga.o
|
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RTC) += platform-mxc_rtc.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RTC) += platform-mxc_rtc.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
|
||||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
|
obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
|
||||||
|
|
|
@ -154,18 +154,6 @@ struct platform_device *__init imx_add_imx_ssi(
|
||||||
const struct imx_ssi_platform_data *pdata);
|
const struct imx_ssi_platform_data *pdata);
|
||||||
|
|
||||||
#include <linux/platform_data/serial-imx.h>
|
#include <linux/platform_data/serial-imx.h>
|
||||||
struct imx_imx_uart_3irq_data {
|
|
||||||
int id;
|
|
||||||
resource_size_t iobase;
|
|
||||||
resource_size_t iosize;
|
|
||||||
resource_size_t irqrx;
|
|
||||||
resource_size_t irqtx;
|
|
||||||
resource_size_t irqrts;
|
|
||||||
};
|
|
||||||
struct platform_device *__init imx_add_imx_uart_3irq(
|
|
||||||
const struct imx_imx_uart_3irq_data *data,
|
|
||||||
const struct imxuart_platform_data *pdata);
|
|
||||||
|
|
||||||
struct imx_imx_uart_1irq_data {
|
struct imx_imx_uart_1irq_data {
|
||||||
int id;
|
int id;
|
||||||
resource_size_t iobase;
|
resource_size_t iobase;
|
||||||
|
|
|
@ -19,11 +19,6 @@
|
||||||
.irq = soc ## _INT_LCDC, \
|
.irq = soc ## _INT_LCDC, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX1
|
|
||||||
const struct imx_imx_fb_data imx1_imx_fb_data __initconst =
|
|
||||||
imx_imx_fb_data_entry_single(MX1, "imx1-fb", SZ_4K);
|
|
||||||
#endif /* ifdef CONFIG_SOC_IMX1 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX21
|
#ifdef CONFIG_SOC_IMX21
|
||||||
const struct imx_imx_fb_data imx21_imx_fb_data __initconst =
|
const struct imx_imx_fb_data imx21_imx_fb_data __initconst =
|
||||||
imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K);
|
imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K);
|
||||||
|
|
|
@ -21,11 +21,6 @@
|
||||||
#define imx_imx_i2c_data_entry(soc, _devid, _id, _hwid, _size) \
|
#define imx_imx_i2c_data_entry(soc, _devid, _id, _hwid, _size) \
|
||||||
[_id] = imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size)
|
[_id] = imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size)
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX1
|
|
||||||
const struct imx_imx_i2c_data imx1_imx_i2c_data __initconst =
|
|
||||||
imx_imx_i2c_data_entry_single(MX1, "imx1-i2c", 0, , SZ_4K);
|
|
||||||
#endif /* ifdef CONFIG_SOC_IMX1 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX21
|
#ifdef CONFIG_SOC_IMX21
|
||||||
const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst =
|
const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst =
|
||||||
imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K);
|
imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K);
|
||||||
|
|
|
@ -27,15 +27,6 @@
|
||||||
.irq = soc ## _INT_UART ## _hwid, \
|
.irq = soc ## _INT_UART ## _hwid, \
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX1
|
|
||||||
const struct imx_imx_uart_3irq_data imx1_imx_uart_data[] __initconst = {
|
|
||||||
#define imx1_imx_uart_data_entry(_id, _hwid) \
|
|
||||||
imx_imx_uart_3irq_data_entry(MX1, _id, _hwid, 0xd0)
|
|
||||||
imx1_imx_uart_data_entry(0, 1),
|
|
||||||
imx1_imx_uart_data_entry(1, 2),
|
|
||||||
};
|
|
||||||
#endif /* ifdef CONFIG_SOC_IMX1 */
|
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX21
|
#ifdef CONFIG_SOC_IMX21
|
||||||
const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst = {
|
const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst = {
|
||||||
#define imx21_imx_uart_data_entry(_id, _hwid) \
|
#define imx21_imx_uart_data_entry(_id, _hwid) \
|
||||||
|
@ -82,34 +73,6 @@ const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst = {
|
||||||
};
|
};
|
||||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||||
|
|
||||||
struct platform_device *__init imx_add_imx_uart_3irq(
|
|
||||||
const struct imx_imx_uart_3irq_data *data,
|
|
||||||
const struct imxuart_platform_data *pdata)
|
|
||||||
{
|
|
||||||
struct resource res[] = {
|
|
||||||
{
|
|
||||||
.start = data->iobase,
|
|
||||||
.end = data->iobase + data->iosize - 1,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
}, {
|
|
||||||
.start = data->irqrx,
|
|
||||||
.end = data->irqrx,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
}, {
|
|
||||||
.start = data->irqtx,
|
|
||||||
.end = data->irqtx,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
}, {
|
|
||||||
.start = data->irqrts,
|
|
||||||
.end = data->irqrx,
|
|
||||||
.flags = IORESOURCE_IRQ,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
return imx_add_platform_device("imx1-uart", data->id, res,
|
|
||||||
ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct platform_device *__init imx_add_imx_uart_1irq(
|
struct platform_device *__init imx_add_imx_uart_1irq(
|
||||||
const struct imx_imx_uart_1irq_data *data,
|
const struct imx_imx_uart_1irq_data *data,
|
||||||
const struct imxuart_platform_data *pdata)
|
const struct imxuart_platform_data *pdata)
|
||||||
|
|
|
@ -21,15 +21,6 @@
|
||||||
#define imx_spi_imx_data_entry(soc, type, devid, id, hwid, size) \
|
#define imx_spi_imx_data_entry(soc, type, devid, id, hwid, size) \
|
||||||
[id] = imx_spi_imx_data_entry_single(soc, type, devid, id, hwid, size)
|
[id] = imx_spi_imx_data_entry_single(soc, type, devid, id, hwid, size)
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX1
|
|
||||||
const struct imx_spi_imx_data imx1_cspi_data[] __initconst = {
|
|
||||||
#define imx1_cspi_data_entry(_id, _hwid) \
|
|
||||||
imx_spi_imx_data_entry(MX1, CSPI, "imx1-cspi", _id, _hwid, SZ_4K)
|
|
||||||
imx1_cspi_data_entry(0, 1),
|
|
||||||
imx1_cspi_data_entry(1, 2),
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_SOC_IMX21
|
#ifdef CONFIG_SOC_IMX21
|
||||||
const struct imx_spi_imx_data imx21_cspi_data[] __initconst = {
|
const struct imx_spi_imx_data imx21_cspi_data[] __initconst = {
|
||||||
#define imx21_cspi_data_entry(_id, _hwid) \
|
#define imx21_cspi_data_entry(_id, _hwid) \
|
||||||
|
|
|
@ -112,7 +112,6 @@
|
||||||
#include "mx2x.h"
|
#include "mx2x.h"
|
||||||
#include "mx21.h"
|
#include "mx21.h"
|
||||||
#include "mx27.h"
|
#include "mx27.h"
|
||||||
#include "mx1.h"
|
|
||||||
|
|
||||||
#define imx_map_entry(soc, name, _type) { \
|
#define imx_map_entry(soc, name, _type) { \
|
||||||
.virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \
|
.virtual = soc ## _IO_P2V(soc ## _ ## name ## _BASE_ADDR), \
|
||||||
|
@ -121,7 +120,7 @@
|
||||||
.type = _type, \
|
.type = _type, \
|
||||||
}
|
}
|
||||||
|
|
||||||
/* There's a off-by-one betweem the gpio bank number and the gpiochip */
|
/* There's an off-by-one between the gpio bank number and the gpiochip */
|
||||||
/* range e.g. GPIO_1_5 is gpio 5 under linux */
|
/* range e.g. GPIO_1_5 is gpio 5 under linux */
|
||||||
#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))
|
#define IMX_GPIO_NR(bank, nr) (((bank) - 1) * 32 + (nr))
|
||||||
|
|
||||||
|
|
|
@ -1,155 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
|
||||||
*
|
|
||||||
* 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., 51 Franklin Street, Fifth Floor, Boston,
|
|
||||||
* MA 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
#ifndef __MACH_IOMUX_MX1_H__
|
|
||||||
#define __MACH_IOMUX_MX1_H__
|
|
||||||
|
|
||||||
#include "iomux-v1.h"
|
|
||||||
|
|
||||||
#define PA0_AIN_SPI2_CLK (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 0)
|
|
||||||
#define PA0_AF_ETMTRACESYNC (GPIO_PORTA | GPIO_AF | 0)
|
|
||||||
#define PA1_AOUT_SPI2_RXD (GPIO_PORTA | GPIO_AOUT | GPIO_IN | 1)
|
|
||||||
#define PA1_PF_TIN (GPIO_PORTA | GPIO_PF | 1)
|
|
||||||
#define PA2_PF_PWM0 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 2)
|
|
||||||
#define PA3_PF_CSI_MCLK (GPIO_PORTA | GPIO_PF | 3)
|
|
||||||
#define PA4_PF_CSI_D0 (GPIO_PORTA | GPIO_PF | 4)
|
|
||||||
#define PA5_PF_CSI_D1 (GPIO_PORTA | GPIO_PF | 5)
|
|
||||||
#define PA6_PF_CSI_D2 (GPIO_PORTA | GPIO_PF | 6)
|
|
||||||
#define PA7_PF_CSI_D3 (GPIO_PORTA | GPIO_PF | 7)
|
|
||||||
#define PA8_PF_CSI_D4 (GPIO_PORTA | GPIO_PF | 8)
|
|
||||||
#define PA9_PF_CSI_D5 (GPIO_PORTA | GPIO_PF | 9)
|
|
||||||
#define PA10_PF_CSI_D6 (GPIO_PORTA | GPIO_PF | 10)
|
|
||||||
#define PA11_PF_CSI_D7 (GPIO_PORTA | GPIO_PF | 11)
|
|
||||||
#define PA12_PF_CSI_VSYNC (GPIO_PORTA | GPIO_PF | 12)
|
|
||||||
#define PA13_PF_CSI_HSYNC (GPIO_PORTA | GPIO_PF | 13)
|
|
||||||
#define PA14_PF_CSI_PIXCLK (GPIO_PORTA | GPIO_PF | 14)
|
|
||||||
#define PA15_PF_I2C_SDA (GPIO_PORTA | GPIO_PF | GPIO_OUT | 15)
|
|
||||||
#define PA16_PF_I2C_SCL (GPIO_PORTA | GPIO_PF | GPIO_OUT | 16)
|
|
||||||
#define PA17_AF_ETMTRACEPKT4 (GPIO_PORTA | GPIO_AF | 17)
|
|
||||||
#define PA17_AIN_SPI2_SS (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 17)
|
|
||||||
#define PA18_AF_ETMTRACEPKT5 (GPIO_PORTA | GPIO_AF | 18)
|
|
||||||
#define PA19_AF_ETMTRACEPKT6 (GPIO_PORTA | GPIO_AF | 19)
|
|
||||||
#define PA20_AF_ETMTRACEPKT7 (GPIO_PORTA | GPIO_AF | 20)
|
|
||||||
#define PA21_PF_A0 (GPIO_PORTA | GPIO_PF | 21)
|
|
||||||
#define PA22_PF_CS4 (GPIO_PORTA | GPIO_PF | 22)
|
|
||||||
#define PA23_PF_CS5 (GPIO_PORTA | GPIO_PF | 23)
|
|
||||||
#define PA24_PF_A16 (GPIO_PORTA | GPIO_PF | 24)
|
|
||||||
#define PA24_AF_ETMTRACEPKT0 (GPIO_PORTA | GPIO_AF | 24)
|
|
||||||
#define PA25_PF_A17 (GPIO_PORTA | GPIO_PF | 25)
|
|
||||||
#define PA25_AF_ETMTRACEPKT1 (GPIO_PORTA | GPIO_AF | 25)
|
|
||||||
#define PA26_PF_A18 (GPIO_PORTA | GPIO_PF | 26)
|
|
||||||
#define PA26_AF_ETMTRACEPKT2 (GPIO_PORTA | GPIO_AF | 26)
|
|
||||||
#define PA27_PF_A19 (GPIO_PORTA | GPIO_PF | 27)
|
|
||||||
#define PA27_AF_ETMTRACEPKT3 (GPIO_PORTA | GPIO_AF | 27)
|
|
||||||
#define PA28_PF_A20 (GPIO_PORTA | GPIO_PF | 28)
|
|
||||||
#define PA28_AF_ETMPIPESTAT0 (GPIO_PORTA | GPIO_AF | 28)
|
|
||||||
#define PA29_PF_A21 (GPIO_PORTA | GPIO_PF | 29)
|
|
||||||
#define PA29_AF_ETMPIPESTAT1 (GPIO_PORTA | GPIO_AF | 29)
|
|
||||||
#define PA30_PF_A22 (GPIO_PORTA | GPIO_PF | 30)
|
|
||||||
#define PA30_AF_ETMPIPESTAT2 (GPIO_PORTA | GPIO_AF | 30)
|
|
||||||
#define PA31_PF_A23 (GPIO_PORTA | GPIO_PF | 31)
|
|
||||||
#define PA31_AF_ETMTRACECLK (GPIO_PORTA | GPIO_AF | 31)
|
|
||||||
#define PB8_PF_SD_DAT0 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 8)
|
|
||||||
#define PB8_AF_MS_PIO (GPIO_PORTB | GPIO_AF | 8)
|
|
||||||
#define PB9_PF_SD_DAT1 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 9)
|
|
||||||
#define PB9_AF_MS_PI1 (GPIO_PORTB | GPIO_AF | 9)
|
|
||||||
#define PB10_PF_SD_DAT2 (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 10)
|
|
||||||
#define PB10_AF_MS_SCLKI (GPIO_PORTB | GPIO_AF | 10)
|
|
||||||
#define PB11_PF_SD_DAT3 (GPIO_PORTB | GPIO_PF | 11)
|
|
||||||
#define PB11_AF_MS_SDIO (GPIO_PORTB | GPIO_AF | 11)
|
|
||||||
#define PB12_PF_SD_CLK (GPIO_PORTB | GPIO_PF | 12)
|
|
||||||
#define PB12_AF_MS_SCLK0 (GPIO_PORTB | GPIO_AF | 12)
|
|
||||||
#define PB13_PF_SD_CMD (GPIO_PORTB | GPIO_PF | GPIO_PUEN | 13)
|
|
||||||
#define PB13_AF_MS_BS (GPIO_PORTB | GPIO_AF | 13)
|
|
||||||
#define PB14_AF_SSI_RXFS (GPIO_PORTB | GPIO_AF | 14)
|
|
||||||
#define PB15_AF_SSI_RXCLK (GPIO_PORTB | GPIO_AF | 15)
|
|
||||||
#define PB16_AF_SSI_RXDAT (GPIO_PORTB | GPIO_AF | GPIO_IN | 16)
|
|
||||||
#define PB17_AF_SSI_TXDAT (GPIO_PORTB | GPIO_AF | GPIO_OUT | 17)
|
|
||||||
#define PB18_AF_SSI_TXFS (GPIO_PORTB | GPIO_AF | 18)
|
|
||||||
#define PB19_AF_SSI_TXCLK (GPIO_PORTB | GPIO_AF | 19)
|
|
||||||
#define PB20_PF_USBD_AFE (GPIO_PORTB | GPIO_PF | 20)
|
|
||||||
#define PB21_PF_USBD_OE (GPIO_PORTB | GPIO_PF | 21)
|
|
||||||
#define PB22_PF_USBD_RCV (GPIO_PORTB | GPIO_PF | 22)
|
|
||||||
#define PB23_PF_USBD_SUSPND (GPIO_PORTB | GPIO_PF | 23)
|
|
||||||
#define PB24_PF_USBD_VP (GPIO_PORTB | GPIO_PF | 24)
|
|
||||||
#define PB25_PF_USBD_VM (GPIO_PORTB | GPIO_PF | 25)
|
|
||||||
#define PB26_PF_USBD_VPO (GPIO_PORTB | GPIO_PF | 26)
|
|
||||||
#define PB27_PF_USBD_VMO (GPIO_PORTB | GPIO_PF | 27)
|
|
||||||
#define PB28_PF_UART2_CTS (GPIO_PORTB | GPIO_PF | GPIO_OUT | 28)
|
|
||||||
#define PB29_PF_UART2_RTS (GPIO_PORTB | GPIO_PF | GPIO_IN | 29)
|
|
||||||
#define PB30_PF_UART2_TXD (GPIO_PORTB | GPIO_PF | GPIO_OUT | 30)
|
|
||||||
#define PB31_PF_UART2_RXD (GPIO_PORTB | GPIO_PF | GPIO_IN | 31)
|
|
||||||
#define PC3_PF_SSI_RXFS (GPIO_PORTC | GPIO_PF | 3)
|
|
||||||
#define PC4_PF_SSI_RXCLK (GPIO_PORTC | GPIO_PF | 4)
|
|
||||||
#define PC5_PF_SSI_RXDAT (GPIO_PORTC | GPIO_PF | GPIO_IN | 5)
|
|
||||||
#define PC6_PF_SSI_TXDAT (GPIO_PORTC | GPIO_PF | GPIO_OUT | 6)
|
|
||||||
#define PC7_PF_SSI_TXFS (GPIO_PORTC | GPIO_PF | 7)
|
|
||||||
#define PC8_PF_SSI_TXCLK (GPIO_PORTC | GPIO_PF | 8)
|
|
||||||
#define PC9_PF_UART1_CTS (GPIO_PORTC | GPIO_PF | GPIO_OUT | 9)
|
|
||||||
#define PC10_PF_UART1_RTS (GPIO_PORTC | GPIO_PF | GPIO_IN | 10)
|
|
||||||
#define PC11_PF_UART1_TXD (GPIO_PORTC | GPIO_PF | GPIO_OUT | 11)
|
|
||||||
#define PC12_PF_UART1_RXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 12)
|
|
||||||
#define PC13_PF_SPI1_SPI_RDY (GPIO_PORTC | GPIO_PF | 13)
|
|
||||||
#define PC14_PF_SPI1_SCLK (GPIO_PORTC | GPIO_PF | 14)
|
|
||||||
#define PC15_PF_SPI1_SS (GPIO_PORTC | GPIO_PF | 15)
|
|
||||||
#define PC16_PF_SPI1_MISO (GPIO_PORTC | GPIO_PF | 16)
|
|
||||||
#define PC17_PF_SPI1_MOSI (GPIO_PORTC | GPIO_PF | 17)
|
|
||||||
#define PC24_BIN_UART3_RI (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 24)
|
|
||||||
#define PC25_BIN_UART3_DSR (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 25)
|
|
||||||
#define PC26_AOUT_UART3_DTR (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 26)
|
|
||||||
#define PC27_BIN_UART3_DCD (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 27)
|
|
||||||
#define PC28_BIN_UART3_CTS (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 28)
|
|
||||||
#define PC29_AOUT_UART3_RTS (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 29)
|
|
||||||
#define PC30_BIN_UART3_TX (GPIO_PORTC | GPIO_BIN | 30)
|
|
||||||
#define PC31_AOUT_UART3_RX (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 31)
|
|
||||||
#define PD6_PF_LSCLK (GPIO_PORTD | GPIO_PF | GPIO_OUT | 6)
|
|
||||||
#define PD7_PF_REV (GPIO_PORTD | GPIO_PF | 7)
|
|
||||||
#define PD7_AF_UART2_DTR (GPIO_PORTD | GPIO_AF | GPIO_IN | 7)
|
|
||||||
#define PD7_AIN_SPI2_SCLK (GPIO_PORTD | GPIO_AIN | 7)
|
|
||||||
#define PD8_PF_CLS (GPIO_PORTD | GPIO_PF | 8)
|
|
||||||
#define PD8_AF_UART2_DCD (GPIO_PORTD | GPIO_AF | GPIO_OUT | 8)
|
|
||||||
#define PD8_AIN_SPI2_SS (GPIO_PORTD | GPIO_AIN | 8)
|
|
||||||
#define PD9_PF_PS (GPIO_PORTD | GPIO_PF | 9)
|
|
||||||
#define PD9_AF_UART2_RI (GPIO_PORTD | GPIO_AF | GPIO_OUT | 9)
|
|
||||||
#define PD9_AOUT_SPI2_RXD (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 9)
|
|
||||||
#define PD10_PF_SPL_SPR (GPIO_PORTD | GPIO_PF | GPIO_OUT | 10)
|
|
||||||
#define PD10_AF_UART2_DSR (GPIO_PORTD | GPIO_AF | GPIO_OUT | 10)
|
|
||||||
#define PD10_AIN_SPI2_TXD (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 10)
|
|
||||||
#define PD11_PF_CONTRAST (GPIO_PORTD | GPIO_PF | GPIO_OUT | 11)
|
|
||||||
#define PD12_PF_ACD_OE (GPIO_PORTD | GPIO_PF | GPIO_OUT | 12)
|
|
||||||
#define PD13_PF_LP_HSYNC (GPIO_PORTD | GPIO_PF | GPIO_OUT | 13)
|
|
||||||
#define PD14_PF_FLM_VSYNC (GPIO_PORTD | GPIO_PF | GPIO_OUT | 14)
|
|
||||||
#define PD15_PF_LD0 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 15)
|
|
||||||
#define PD16_PF_LD1 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 16)
|
|
||||||
#define PD17_PF_LD2 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 17)
|
|
||||||
#define PD18_PF_LD3 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 18)
|
|
||||||
#define PD19_PF_LD4 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 19)
|
|
||||||
#define PD20_PF_LD5 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 20)
|
|
||||||
#define PD21_PF_LD6 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 21)
|
|
||||||
#define PD22_PF_LD7 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 22)
|
|
||||||
#define PD23_PF_LD8 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 23)
|
|
||||||
#define PD24_PF_LD9 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 24)
|
|
||||||
#define PD25_PF_LD10 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 25)
|
|
||||||
#define PD26_PF_LD11 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 26)
|
|
||||||
#define PD27_PF_LD12 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 27)
|
|
||||||
#define PD28_PF_LD13 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 28)
|
|
||||||
#define PD29_PF_LD14 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 29)
|
|
||||||
#define PD30_PF_LD15 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 30)
|
|
||||||
#define PD31_PF_TMR2OUT (GPIO_PORTD | GPIO_PF | 31)
|
|
||||||
#define PD31_BIN_SPI2_TXD (GPIO_PORTD | GPIO_BIN | 31)
|
|
||||||
|
|
||||||
#endif /* ifndef __MACH_IOMUX_MX1_H__ */
|
|
|
@ -598,10 +598,7 @@ enum iomux_pins {
|
||||||
#define MX31_PIN_CONTRAST__CONTRAST IOMUX_MODE(MX31_PIN_CONTRAST, IOMUX_CONFIG_FUNC)
|
#define MX31_PIN_CONTRAST__CONTRAST IOMUX_MODE(MX31_PIN_CONTRAST, IOMUX_CONFIG_FUNC)
|
||||||
#define MX31_PIN_D3_SPL__D3_SPL IOMUX_MODE(MX31_PIN_D3_SPL, IOMUX_CONFIG_FUNC)
|
#define MX31_PIN_D3_SPL__D3_SPL IOMUX_MODE(MX31_PIN_D3_SPL, IOMUX_CONFIG_FUNC)
|
||||||
#define MX31_PIN_D3_CLS__D3_CLS IOMUX_MODE(MX31_PIN_D3_CLS, IOMUX_CONFIG_FUNC)
|
#define MX31_PIN_D3_CLS__D3_CLS IOMUX_MODE(MX31_PIN_D3_CLS, IOMUX_CONFIG_FUNC)
|
||||||
#define MX31_PIN_LCS0__GPI03_23 IOMUX_MODE(MX31_PIN_LCS0, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_GPIO1_1__GPIO IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO)
|
#define MX31_PIN_GPIO1_1__GPIO IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO)
|
||||||
#define MX31_PIN_I2C_CLK__SCL IOMUX_MODE(MX31_PIN_I2C_CLK, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_I2C_DAT__SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
|
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
|
||||||
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
|
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
|
||||||
#define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1)
|
#define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1)
|
||||||
|
@ -665,37 +662,6 @@ enum iomux_pins {
|
||||||
#define MX31_PIN_USB_OC__GPIO1_30 IOMUX_MODE(MX31_PIN_USB_OC, IOMUX_CONFIG_GPIO)
|
#define MX31_PIN_USB_OC__GPIO1_30 IOMUX_MODE(MX31_PIN_USB_OC, IOMUX_CONFIG_GPIO)
|
||||||
#define MX31_PIN_I2C_DAT__I2C1_SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
|
#define MX31_PIN_I2C_DAT__I2C1_SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
|
||||||
#define MX31_PIN_I2C_CLK__I2C1_SCL IOMUX_MODE(MX31_PIN_I2C_CLK, IOMUX_CONFIG_FUNC)
|
#define MX31_PIN_I2C_CLK__I2C1_SCL IOMUX_MODE(MX31_PIN_I2C_CLK, IOMUX_CONFIG_FUNC)
|
||||||
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
|
|
||||||
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
|
|
||||||
#define MX31_PIN_ATA_CS0__GPIO3_26 IOMUX_MODE(MX31_PIN_ATA_CS0, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_ATA_CS1__GPIO3_27 IOMUX_MODE(MX31_PIN_ATA_CS1, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_PC_PWRON__SD2_DATA3 IOMUX_MODE(MX31_PIN_PC_PWRON, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_PC_VS1__SD2_DATA2 IOMUX_MODE(MX31_PIN_PC_VS1, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_PC_READY__SD2_DATA1 IOMUX_MODE(MX31_PIN_PC_READY, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_PC_WAIT_B__SD2_DATA0 IOMUX_MODE(MX31_PIN_PC_WAIT_B, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_PC_CD2_B__SD2_CLK IOMUX_MODE(MX31_PIN_PC_CD2_B, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_PC_CD1_B__SD2_CMD IOMUX_MODE(MX31_PIN_PC_CD1_B, IOMUX_CONFIG_ALT1)
|
|
||||||
#define MX31_PIN_ATA_DIOR__GPIO3_28 IOMUX_MODE(MX31_PIN_ATA_DIOR, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_ATA_DIOW__GPIO3_29 IOMUX_MODE(MX31_PIN_ATA_DIOW, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D7__CSI_D7 IOMUX_MODE(MX31_PIN_CSI_D7, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D8__CSI_D8 IOMUX_MODE(MX31_PIN_CSI_D8, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D9__CSI_D9 IOMUX_MODE(MX31_PIN_CSI_D9, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D10__CSI_D10 IOMUX_MODE(MX31_PIN_CSI_D10, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D11__CSI_D11 IOMUX_MODE(MX31_PIN_CSI_D11, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D12__CSI_D12 IOMUX_MODE(MX31_PIN_CSI_D12, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D13__CSI_D13 IOMUX_MODE(MX31_PIN_CSI_D13, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D14__CSI_D14 IOMUX_MODE(MX31_PIN_CSI_D14, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_D15__CSI_D15 IOMUX_MODE(MX31_PIN_CSI_D15, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_HSYNC__CSI_HSYNC IOMUX_MODE(MX31_PIN_CSI_HSYNC, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_MCLK__CSI_MCLK IOMUX_MODE(MX31_PIN_CSI_MCLK, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_PIXCLK__CSI_PIXCLK IOMUX_MODE(MX31_PIN_CSI_PIXCLK, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_CSI_VSYNC__CSI_VSYNC IOMUX_MODE(MX31_PIN_CSI_VSYNC, IOMUX_CONFIG_FUNC)
|
|
||||||
#define MX31_PIN_GPIO3_0__GPIO3_0 IOMUX_MODE(MX31_PIN_GPIO3_0, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_GPIO3_1__GPIO3_1 IOMUX_MODE(MX31_PIN_GPIO3_1, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_TXD2__GPIO1_28 IOMUX_MODE(MX31_PIN_TXD2, IOMUX_CONFIG_GPIO)
|
|
||||||
#define MX31_PIN_GPIO1_0__GPIO1_0 IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO)
|
#define MX31_PIN_GPIO1_0__GPIO1_0 IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO)
|
||||||
#define MX31_PIN_SVEN0__GPIO2_0 IOMUX_MODE(MX31_PIN_SVEN0, IOMUX_CONFIG_GPIO)
|
#define MX31_PIN_SVEN0__GPIO2_0 IOMUX_MODE(MX31_PIN_SVEN0, IOMUX_CONFIG_GPIO)
|
||||||
#define MX31_PIN_STX0__GPIO2_1 IOMUX_MODE(MX31_PIN_STX0, IOMUX_CONFIG_GPIO)
|
#define MX31_PIN_STX0__GPIO2_1 IOMUX_MODE(MX31_PIN_STX0, IOMUX_CONFIG_GPIO)
|
||||||
|
|
|
@ -1,148 +0,0 @@
|
||||||
/*
|
|
||||||
* linux/arch/arm/mach-imx/mach-apf9328.c
|
|
||||||
*
|
|
||||||
* Copyright (c) 2005-2011 ARMadeus systems <support@armadeus.com>
|
|
||||||
*
|
|
||||||
* This work is based on mach-scb9328.c which is:
|
|
||||||
* Copyright (c) 2004 Sascha Hauer <saschahauer@web.de>
|
|
||||||
* Copyright (c) 2006-2008 Juergen Beisert <jbeisert@netscape.net>
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/mtd/physmap.h>
|
|
||||||
#include <linux/dm9000.h>
|
|
||||||
#include <linux/gpio.h>
|
|
||||||
#include <linux/i2c.h>
|
|
||||||
|
|
||||||
#include <asm/mach-types.h>
|
|
||||||
#include <asm/mach/arch.h>
|
|
||||||
#include <asm/mach/time.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "devices-imx1.h"
|
|
||||||
#include "hardware.h"
|
|
||||||
#include "iomux-mx1.h"
|
|
||||||
|
|
||||||
static const int apf9328_pins[] __initconst = {
|
|
||||||
/* UART1 */
|
|
||||||
PC9_PF_UART1_CTS,
|
|
||||||
PC10_PF_UART1_RTS,
|
|
||||||
PC11_PF_UART1_TXD,
|
|
||||||
PC12_PF_UART1_RXD,
|
|
||||||
/* UART2 */
|
|
||||||
PB28_PF_UART2_CTS,
|
|
||||||
PB29_PF_UART2_RTS,
|
|
||||||
PB30_PF_UART2_TXD,
|
|
||||||
PB31_PF_UART2_RXD,
|
|
||||||
/* I2C */
|
|
||||||
PA15_PF_I2C_SDA,
|
|
||||||
PA16_PF_I2C_SCL,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The APF9328 can have up to 32MB NOR Flash
|
|
||||||
*/
|
|
||||||
static struct resource flash_resource = {
|
|
||||||
.start = MX1_CS0_PHYS,
|
|
||||||
.end = MX1_CS0_PHYS + SZ_32M - 1,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct physmap_flash_data apf9328_flash_data = {
|
|
||||||
.width = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device apf9328_flash_device = {
|
|
||||||
.name = "physmap-flash",
|
|
||||||
.id = 0,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &apf9328_flash_data,
|
|
||||||
},
|
|
||||||
.resource = &flash_resource,
|
|
||||||
.num_resources = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* APF9328 has a DM9000 Ethernet controller
|
|
||||||
*/
|
|
||||||
static struct dm9000_plat_data dm9000_setup = {
|
|
||||||
.flags = DM9000_PLATF_16BITONLY
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct resource dm9000_resources[] = {
|
|
||||||
{
|
|
||||||
.start = MX1_CS4_PHYS + 0x00C00000,
|
|
||||||
.end = MX1_CS4_PHYS + 0x00C00001,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
}, {
|
|
||||||
.start = MX1_CS4_PHYS + 0x00C00002,
|
|
||||||
.end = MX1_CS4_PHYS + 0x00C00003,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
}, {
|
|
||||||
/* irq number is run-time assigned */
|
|
||||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device dm9000x_device = {
|
|
||||||
.name = "dm9000",
|
|
||||||
.id = 0,
|
|
||||||
.num_resources = ARRAY_SIZE(dm9000_resources),
|
|
||||||
.resource = dm9000_resources,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &dm9000_setup,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct imxuart_platform_data uart1_pdata __initconst = {
|
|
||||||
.flags = IMXUART_HAVE_RTSCTS,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct imxi2c_platform_data apf9328_i2c_data __initconst = {
|
|
||||||
.bitrate = 100000,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
|
||||||
&apf9328_flash_device,
|
|
||||||
&dm9000x_device,
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init apf9328_init(void)
|
|
||||||
{
|
|
||||||
imx1_soc_init();
|
|
||||||
|
|
||||||
mxc_gpio_setup_multiple_pins(apf9328_pins,
|
|
||||||
ARRAY_SIZE(apf9328_pins),
|
|
||||||
"APF9328");
|
|
||||||
|
|
||||||
imx1_add_imx_uart0(NULL);
|
|
||||||
imx1_add_imx_uart1(&uart1_pdata);
|
|
||||||
|
|
||||||
imx1_add_imx_i2c(&apf9328_i2c_data);
|
|
||||||
|
|
||||||
dm9000_resources[2].start = gpio_to_irq(IMX_GPIO_NR(2, 14));
|
|
||||||
dm9000_resources[2].end = gpio_to_irq(IMX_GPIO_NR(2, 14));
|
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init apf9328_timer_init(void)
|
|
||||||
{
|
|
||||||
mx1_clocks_init(32768);
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_START(APF9328, "Armadeus APF9328")
|
|
||||||
/* Maintainer: Gwenhael Goavec-Merou, ARMadeus Systems */
|
|
||||||
.map_io = mx1_map_io,
|
|
||||||
.init_early = imx1_init_early,
|
|
||||||
.init_irq = mx1_init_irq,
|
|
||||||
.init_time = apf9328_timer_init,
|
|
||||||
.init_machine = apf9328_init,
|
|
||||||
.restart = mxc_restart,
|
|
||||||
MACHINE_END
|
|
|
@ -9,8 +9,27 @@
|
||||||
|
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
|
#include <asm/mach/map.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "hardware.h"
|
||||||
|
|
||||||
|
#define MX1_AVIC_ADDR 0x00223000
|
||||||
|
|
||||||
|
static void __init imx1_init_early(void)
|
||||||
|
{
|
||||||
|
mxc_set_cpu_type(MXC_CPU_MX1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __init imx1_init_irq(void)
|
||||||
|
{
|
||||||
|
void __iomem *avic_addr;
|
||||||
|
|
||||||
|
avic_addr = ioremap(MX1_AVIC_ADDR, SZ_4K);
|
||||||
|
WARN_ON(!avic_addr);
|
||||||
|
|
||||||
|
mxc_init_irq(avic_addr);
|
||||||
|
}
|
||||||
|
|
||||||
static const char * const imx1_dt_board_compat[] __initconst = {
|
static const char * const imx1_dt_board_compat[] __initconst = {
|
||||||
"fsl,imx1",
|
"fsl,imx1",
|
||||||
|
@ -18,9 +37,9 @@ static const char * const imx1_dt_board_compat[] __initconst = {
|
||||||
};
|
};
|
||||||
|
|
||||||
DT_MACHINE_START(IMX1_DT, "Freescale i.MX1 (Device Tree Support)")
|
DT_MACHINE_START(IMX1_DT, "Freescale i.MX1 (Device Tree Support)")
|
||||||
.map_io = mx1_map_io,
|
.map_io = debug_ll_io_init,
|
||||||
.init_early = imx1_init_early,
|
.init_early = imx1_init_early,
|
||||||
.init_irq = mx1_init_irq,
|
.init_irq = imx1_init_irq,
|
||||||
.dt_compat = imx1_dt_board_compat,
|
.dt_compat = imx1_dt_board_compat,
|
||||||
.restart = mxc_restart,
|
.restart = mxc_restart,
|
||||||
MACHINE_END
|
MACHINE_END
|
|
@ -63,7 +63,7 @@
|
||||||
*/
|
*/
|
||||||
#define KZM_ARM11_16550 (MX31_CS4_BASE_ADDR + 0x1050)
|
#define KZM_ARM11_16550 (MX31_CS4_BASE_ADDR + 0x1050)
|
||||||
|
|
||||||
#if defined(CONFIG_SERIAL_8250) || defined(CONFIG_SERIAL_8250_MODULE)
|
#if IS_ENABLED(CONFIG_SERIAL_8250)
|
||||||
/*
|
/*
|
||||||
* KZM-ARM11-01 has an external UART on FPGA
|
* KZM-ARM11-01 has an external UART on FPGA
|
||||||
*/
|
*/
|
||||||
|
@ -141,7 +141,7 @@ static inline int kzm_init_ext_uart(void)
|
||||||
/*
|
/*
|
||||||
* SMSC LAN9118
|
* SMSC LAN9118
|
||||||
*/
|
*/
|
||||||
#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
|
#if IS_ENABLED(CONFIG_SMSC911X)
|
||||||
static struct smsc911x_platform_config kzm_smsc9118_config = {
|
static struct smsc911x_platform_config kzm_smsc9118_config = {
|
||||||
.phy_interface = PHY_INTERFACE_MODE_MII,
|
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
|
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
|
||||||
|
@ -201,7 +201,7 @@ static inline int kzm_init_smsc9118(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_SERIAL_IMX) || defined(CONFIG_SERIAL_IMX_MODULE)
|
#if IS_ENABLED(CONFIG_SERIAL_IMX)
|
||||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||||
.flags = IMXUART_HAVE_RTSCTS,
|
.flags = IMXUART_HAVE_RTSCTS,
|
||||||
};
|
};
|
||||||
|
|
|
@ -149,7 +149,7 @@ static unsigned int pcm037_pins[] = {
|
||||||
MX31_PIN_CONTRAST__CONTRAST,
|
MX31_PIN_CONTRAST__CONTRAST,
|
||||||
MX31_PIN_D3_SPL__D3_SPL,
|
MX31_PIN_D3_SPL__D3_SPL,
|
||||||
MX31_PIN_D3_CLS__D3_CLS,
|
MX31_PIN_D3_CLS__D3_CLS,
|
||||||
MX31_PIN_LCS0__GPI03_23,
|
MX31_PIN_LCS0__GPIO3_23,
|
||||||
/* CSI */
|
/* CSI */
|
||||||
IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_GPIO),
|
IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_GPIO),
|
||||||
MX31_PIN_CSI_D6__CSI_D6,
|
MX31_PIN_CSI_D6__CSI_D6,
|
||||||
|
|
|
@ -1,143 +0,0 @@
|
||||||
/*
|
|
||||||
* linux/arch/arm/mach-mx1/mach-scb9328.c
|
|
||||||
*
|
|
||||||
* Copyright (c) 2004 Sascha Hauer <saschahauer@web.de>
|
|
||||||
* Copyright (c) 2006-2008 Juergen Beisert <jbeisert@netscape.net>
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/mtd/physmap.h>
|
|
||||||
#include <linux/interrupt.h>
|
|
||||||
#include <linux/dm9000.h>
|
|
||||||
#include <linux/gpio.h>
|
|
||||||
|
|
||||||
#include <asm/mach-types.h>
|
|
||||||
#include <asm/mach/arch.h>
|
|
||||||
#include <asm/mach/time.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "devices-imx1.h"
|
|
||||||
#include "hardware.h"
|
|
||||||
#include "iomux-mx1.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This scb9328 has a 32MiB flash
|
|
||||||
*/
|
|
||||||
static struct resource flash_resource = {
|
|
||||||
.start = MX1_CS0_PHYS,
|
|
||||||
.end = MX1_CS0_PHYS + (32 * 1024 * 1024) - 1,
|
|
||||||
.flags = IORESOURCE_MEM,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct physmap_flash_data scb_flash_data = {
|
|
||||||
.width = 2,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device scb_flash_device = {
|
|
||||||
.name = "physmap-flash",
|
|
||||||
.id = 0,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &scb_flash_data,
|
|
||||||
},
|
|
||||||
.resource = &flash_resource,
|
|
||||||
.num_resources = 1,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* scb9328 has a DM9000 network controller
|
|
||||||
* connected to CS5, with 16 bit data path
|
|
||||||
* and interrupt connected to GPIO 3
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* internal datapath is fixed 16 bit
|
|
||||||
*/
|
|
||||||
static struct dm9000_plat_data dm9000_platdata = {
|
|
||||||
.flags = DM9000_PLATF_16BITONLY,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* the DM9000 drivers wants two defined address spaces
|
|
||||||
* to gain access to address latch registers and the data path.
|
|
||||||
*/
|
|
||||||
static struct resource dm9000x_resources[] = {
|
|
||||||
{
|
|
||||||
.name = "address area",
|
|
||||||
.start = MX1_CS5_PHYS,
|
|
||||||
.end = MX1_CS5_PHYS + 1,
|
|
||||||
.flags = IORESOURCE_MEM, /* address access */
|
|
||||||
}, {
|
|
||||||
.name = "data area",
|
|
||||||
.start = MX1_CS5_PHYS + 4,
|
|
||||||
.end = MX1_CS5_PHYS + 5,
|
|
||||||
.flags = IORESOURCE_MEM, /* data access */
|
|
||||||
}, {
|
|
||||||
/* irq number is run-time assigned */
|
|
||||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device dm9000x_device = {
|
|
||||||
.name = "dm9000",
|
|
||||||
.id = 0,
|
|
||||||
.num_resources = ARRAY_SIZE(dm9000x_resources),
|
|
||||||
.resource = dm9000x_resources,
|
|
||||||
.dev = {
|
|
||||||
.platform_data = &dm9000_platdata,
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static const int mxc_uart1_pins[] = {
|
|
||||||
PC9_PF_UART1_CTS,
|
|
||||||
PC10_PF_UART1_RTS,
|
|
||||||
PC11_PF_UART1_TXD,
|
|
||||||
PC12_PF_UART1_RXD,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
|
||||||
.flags = IMXUART_HAVE_RTSCTS,
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
|
||||||
&scb_flash_device,
|
|
||||||
&dm9000x_device,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* scb9328_init - Init the CPU card itself
|
|
||||||
*/
|
|
||||||
static void __init scb9328_init(void)
|
|
||||||
{
|
|
||||||
imx1_soc_init();
|
|
||||||
|
|
||||||
mxc_gpio_setup_multiple_pins(mxc_uart1_pins,
|
|
||||||
ARRAY_SIZE(mxc_uart1_pins), "UART1");
|
|
||||||
|
|
||||||
imx1_add_imx_uart0(&uart_pdata);
|
|
||||||
|
|
||||||
printk(KERN_INFO"Scb9328: Adding devices\n");
|
|
||||||
dm9000x_resources[2].start = gpio_to_irq(IMX_GPIO_NR(3, 3));
|
|
||||||
dm9000x_resources[2].end = gpio_to_irq(IMX_GPIO_NR(3, 3));
|
|
||||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init scb9328_timer_init(void)
|
|
||||||
{
|
|
||||||
mx1_clocks_init(32000);
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_START(SCB9328, "Synertronixx scb9328")
|
|
||||||
/* Sascha Hauer */
|
|
||||||
.atag_offset = 100,
|
|
||||||
.map_io = mx1_map_io,
|
|
||||||
.init_early = imx1_init_early,
|
|
||||||
.init_irq = mx1_init_irq,
|
|
||||||
.init_time = scb9328_timer_init,
|
|
||||||
.init_machine = scb9328_init,
|
|
||||||
.restart = mxc_restart,
|
|
||||||
MACHINE_END
|
|
|
@ -1,67 +0,0 @@
|
||||||
/*
|
|
||||||
* author: Sascha Hauer
|
|
||||||
* Created: april 20th, 2004
|
|
||||||
* Copyright: Synertronixx GmbH
|
|
||||||
*
|
|
||||||
* Common code for i.MX1 machines
|
|
||||||
*
|
|
||||||
* 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.
|
|
||||||
*/
|
|
||||||
#include <linux/kernel.h>
|
|
||||||
#include <linux/init.h>
|
|
||||||
#include <linux/io.h>
|
|
||||||
#include <linux/pinctrl/machine.h>
|
|
||||||
|
|
||||||
#include <asm/mach/map.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "devices/devices-common.h"
|
|
||||||
#include "hardware.h"
|
|
||||||
#include "iomux-v1.h"
|
|
||||||
|
|
||||||
static struct map_desc imx_io_desc[] __initdata = {
|
|
||||||
imx_map_entry(MX1, IO, MT_DEVICE),
|
|
||||||
};
|
|
||||||
|
|
||||||
void __init mx1_map_io(void)
|
|
||||||
{
|
|
||||||
iotable_init(imx_io_desc, ARRAY_SIZE(imx_io_desc));
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init imx1_init_early(void)
|
|
||||||
{
|
|
||||||
mxc_set_cpu_type(MXC_CPU_MX1);
|
|
||||||
imx_iomuxv1_init(MX1_IO_ADDRESS(MX1_GPIO_BASE_ADDR),
|
|
||||||
MX1_NUM_GPIO_PORT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init mx1_init_irq(void)
|
|
||||||
{
|
|
||||||
mxc_init_irq(MX1_IO_ADDRESS(MX1_AVIC_BASE_ADDR));
|
|
||||||
}
|
|
||||||
|
|
||||||
void __init imx1_soc_init(void)
|
|
||||||
{
|
|
||||||
imx1_reset_init(MX1_IO_ADDRESS(MX1_WDT_BASE_ADDR));
|
|
||||||
mxc_device_init();
|
|
||||||
|
|
||||||
mxc_register_gpio("imx1-gpio", 0, MX1_GPIO1_BASE_ADDR, SZ_256,
|
|
||||||
MX1_GPIO_INT_PORTA, 0);
|
|
||||||
mxc_register_gpio("imx1-gpio", 1, MX1_GPIO2_BASE_ADDR, SZ_256,
|
|
||||||
MX1_GPIO_INT_PORTB, 0);
|
|
||||||
mxc_register_gpio("imx1-gpio", 2, MX1_GPIO3_BASE_ADDR, SZ_256,
|
|
||||||
MX1_GPIO_INT_PORTC, 0);
|
|
||||||
mxc_register_gpio("imx1-gpio", 3, MX1_GPIO4_BASE_ADDR, SZ_256,
|
|
||||||
MX1_GPIO_INT_PORTD, 0);
|
|
||||||
imx_add_imx_dma("imx1-dma", MX1_DMA_BASE_ADDR,
|
|
||||||
MX1_DMA_INT, MX1_DMA_ERR);
|
|
||||||
pinctrl_provide_dummies();
|
|
||||||
}
|
|
|
@ -1,172 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 1997,1998 Russell King
|
|
||||||
* Copyright (C) 1999 ARM Limited
|
|
||||||
* Copyright 2004-2007 Freescale Semiconductor, Inc. All Rights Reserved.
|
|
||||||
* Copyright (c) 2008 Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
|
|
||||||
*
|
|
||||||
* 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 __MACH_MX1_H__
|
|
||||||
#define __MACH_MX1_H__
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Memory map
|
|
||||||
*/
|
|
||||||
#define MX1_IO_BASE_ADDR 0x00200000
|
|
||||||
#define MX1_IO_SIZE SZ_1M
|
|
||||||
|
|
||||||
#define MX1_CS0_PHYS 0x10000000
|
|
||||||
#define MX1_CS0_SIZE 0x02000000
|
|
||||||
|
|
||||||
#define MX1_CS1_PHYS 0x12000000
|
|
||||||
#define MX1_CS1_SIZE 0x01000000
|
|
||||||
|
|
||||||
#define MX1_CS2_PHYS 0x13000000
|
|
||||||
#define MX1_CS2_SIZE 0x01000000
|
|
||||||
|
|
||||||
#define MX1_CS3_PHYS 0x14000000
|
|
||||||
#define MX1_CS3_SIZE 0x01000000
|
|
||||||
|
|
||||||
#define MX1_CS4_PHYS 0x15000000
|
|
||||||
#define MX1_CS4_SIZE 0x01000000
|
|
||||||
|
|
||||||
#define MX1_CS5_PHYS 0x16000000
|
|
||||||
#define MX1_CS5_SIZE 0x01000000
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Register BASEs, based on OFFSETs
|
|
||||||
*/
|
|
||||||
#define MX1_AIPI1_BASE_ADDR (0x00000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_WDT_BASE_ADDR (0x01000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_TIM1_BASE_ADDR (0x02000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_TIM2_BASE_ADDR (0x03000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_RTC_BASE_ADDR (0x04000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_LCDC_BASE_ADDR (0x05000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_UART1_BASE_ADDR (0x06000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_UART2_BASE_ADDR (0x07000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_PWM_BASE_ADDR (0x08000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_DMA_BASE_ADDR (0x09000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_AIPI2_BASE_ADDR (0x10000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_SIM_BASE_ADDR (0x11000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_USBD_BASE_ADDR (0x12000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_CSPI1_BASE_ADDR (0x13000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_MMC_BASE_ADDR (0x14000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_ASP_BASE_ADDR (0x15000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_BTA_BASE_ADDR (0x16000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_I2C_BASE_ADDR (0x17000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_SSI_BASE_ADDR (0x18000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_CSPI2_BASE_ADDR (0x19000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_MSHC_BASE_ADDR (0x1A000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_CCM_BASE_ADDR (0x1B000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_SCM_BASE_ADDR (0x1B804 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_GPIO_BASE_ADDR (0x1C000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_GPIO1_BASE_ADDR (0x1C000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_GPIO2_BASE_ADDR (0x1C100 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_GPIO3_BASE_ADDR (0x1C200 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_GPIO4_BASE_ADDR (0x1C300 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_EIM_BASE_ADDR (0x20000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_SDRAMC_BASE_ADDR (0x21000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_MMA_BASE_ADDR (0x22000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_AVIC_BASE_ADDR (0x23000 + MX1_IO_BASE_ADDR)
|
|
||||||
#define MX1_CSI_BASE_ADDR (0x24000 + MX1_IO_BASE_ADDR)
|
|
||||||
|
|
||||||
/* macro to get at IO space when running virtually */
|
|
||||||
#define MX1_IO_P2V(x) IMX_IO_P2V(x)
|
|
||||||
#define MX1_IO_ADDRESS(x) IOMEM(MX1_IO_P2V(x))
|
|
||||||
|
|
||||||
/* fixed interrput numbers */
|
|
||||||
#include <asm/irq.h>
|
|
||||||
#define MX1_INT_SOFTINT (NR_IRQS_LEGACY + 0)
|
|
||||||
#define MX1_INT_CSI (NR_IRQS_LEGACY + 6)
|
|
||||||
#define MX1_DSPA_MAC_INT (NR_IRQS_LEGACY + 7)
|
|
||||||
#define MX1_DSPA_INT (NR_IRQS_LEGACY + 8)
|
|
||||||
#define MX1_COMP_INT (NR_IRQS_LEGACY + 9)
|
|
||||||
#define MX1_MSHC_XINT (NR_IRQS_LEGACY + 10)
|
|
||||||
#define MX1_GPIO_INT_PORTA (NR_IRQS_LEGACY + 11)
|
|
||||||
#define MX1_GPIO_INT_PORTB (NR_IRQS_LEGACY + 12)
|
|
||||||
#define MX1_GPIO_INT_PORTC (NR_IRQS_LEGACY + 13)
|
|
||||||
#define MX1_INT_LCDC (NR_IRQS_LEGACY + 14)
|
|
||||||
#define MX1_SIM_INT (NR_IRQS_LEGACY + 15)
|
|
||||||
#define MX1_SIM_DATA_INT (NR_IRQS_LEGACY + 16)
|
|
||||||
#define MX1_RTC_INT (NR_IRQS_LEGACY + 17)
|
|
||||||
#define MX1_RTC_SAMINT (NR_IRQS_LEGACY + 18)
|
|
||||||
#define MX1_INT_UART2PFERR (NR_IRQS_LEGACY + 19)
|
|
||||||
#define MX1_INT_UART2RTS (NR_IRQS_LEGACY + 20)
|
|
||||||
#define MX1_INT_UART2DTR (NR_IRQS_LEGACY + 21)
|
|
||||||
#define MX1_INT_UART2UARTC (NR_IRQS_LEGACY + 22)
|
|
||||||
#define MX1_INT_UART2TX (NR_IRQS_LEGACY + 23)
|
|
||||||
#define MX1_INT_UART2RX (NR_IRQS_LEGACY + 24)
|
|
||||||
#define MX1_INT_UART1PFERR (NR_IRQS_LEGACY + 25)
|
|
||||||
#define MX1_INT_UART1RTS (NR_IRQS_LEGACY + 26)
|
|
||||||
#define MX1_INT_UART1DTR (NR_IRQS_LEGACY + 27)
|
|
||||||
#define MX1_INT_UART1UARTC (NR_IRQS_LEGACY + 28)
|
|
||||||
#define MX1_INT_UART1TX (NR_IRQS_LEGACY + 29)
|
|
||||||
#define MX1_INT_UART1RX (NR_IRQS_LEGACY + 30)
|
|
||||||
#define MX1_VOICE_DAC_INT (NR_IRQS_LEGACY + 31)
|
|
||||||
#define MX1_VOICE_ADC_INT (NR_IRQS_LEGACY + 32)
|
|
||||||
#define MX1_PEN_DATA_INT (NR_IRQS_LEGACY + 33)
|
|
||||||
#define MX1_PWM_INT (NR_IRQS_LEGACY + 34)
|
|
||||||
#define MX1_SDHC_INT (NR_IRQS_LEGACY + 35)
|
|
||||||
#define MX1_INT_I2C (NR_IRQS_LEGACY + 39)
|
|
||||||
#define MX1_INT_CSPI2 (NR_IRQS_LEGACY + 40)
|
|
||||||
#define MX1_INT_CSPI1 (NR_IRQS_LEGACY + 41)
|
|
||||||
#define MX1_SSI_TX_INT (NR_IRQS_LEGACY + 42)
|
|
||||||
#define MX1_SSI_TX_ERR_INT (NR_IRQS_LEGACY + 43)
|
|
||||||
#define MX1_SSI_RX_INT (NR_IRQS_LEGACY + 44)
|
|
||||||
#define MX1_SSI_RX_ERR_INT (NR_IRQS_LEGACY + 45)
|
|
||||||
#define MX1_TOUCH_INT (NR_IRQS_LEGACY + 46)
|
|
||||||
#define MX1_INT_USBD0 (NR_IRQS_LEGACY + 47)
|
|
||||||
#define MX1_INT_USBD1 (NR_IRQS_LEGACY + 48)
|
|
||||||
#define MX1_INT_USBD2 (NR_IRQS_LEGACY + 49)
|
|
||||||
#define MX1_INT_USBD3 (NR_IRQS_LEGACY + 50)
|
|
||||||
#define MX1_INT_USBD4 (NR_IRQS_LEGACY + 51)
|
|
||||||
#define MX1_INT_USBD5 (NR_IRQS_LEGACY + 52)
|
|
||||||
#define MX1_INT_USBD6 (NR_IRQS_LEGACY + 53)
|
|
||||||
#define MX1_BTSYS_INT (NR_IRQS_LEGACY + 55)
|
|
||||||
#define MX1_BTTIM_INT (NR_IRQS_LEGACY + 56)
|
|
||||||
#define MX1_BTWUI_INT (NR_IRQS_LEGACY + 57)
|
|
||||||
#define MX1_TIM2_INT (NR_IRQS_LEGACY + 58)
|
|
||||||
#define MX1_TIM1_INT (NR_IRQS_LEGACY + 59)
|
|
||||||
#define MX1_DMA_ERR (NR_IRQS_LEGACY + 60)
|
|
||||||
#define MX1_DMA_INT (NR_IRQS_LEGACY + 61)
|
|
||||||
#define MX1_GPIO_INT_PORTD (NR_IRQS_LEGACY + 62)
|
|
||||||
#define MX1_WDT_INT (NR_IRQS_LEGACY + 63)
|
|
||||||
|
|
||||||
/* DMA */
|
|
||||||
#define MX1_DMA_REQ_UART3_T 2
|
|
||||||
#define MX1_DMA_REQ_UART3_R 3
|
|
||||||
#define MX1_DMA_REQ_SSI2_T 4
|
|
||||||
#define MX1_DMA_REQ_SSI2_R 5
|
|
||||||
#define MX1_DMA_REQ_CSI_STAT 6
|
|
||||||
#define MX1_DMA_REQ_CSI_R 7
|
|
||||||
#define MX1_DMA_REQ_MSHC 8
|
|
||||||
#define MX1_DMA_REQ_DSPA_DCT_DOUT 9
|
|
||||||
#define MX1_DMA_REQ_DSPA_DCT_DIN 10
|
|
||||||
#define MX1_DMA_REQ_DSPA_MAC 11
|
|
||||||
#define MX1_DMA_REQ_EXT 12
|
|
||||||
#define MX1_DMA_REQ_SDHC 13
|
|
||||||
#define MX1_DMA_REQ_SPI1_R 14
|
|
||||||
#define MX1_DMA_REQ_SPI1_T 15
|
|
||||||
#define MX1_DMA_REQ_SSI_T 16
|
|
||||||
#define MX1_DMA_REQ_SSI_R 17
|
|
||||||
#define MX1_DMA_REQ_ASP_DAC 18
|
|
||||||
#define MX1_DMA_REQ_ASP_ADC 19
|
|
||||||
#define MX1_DMA_REQ_USP_EP(x) (20 + (x))
|
|
||||||
#define MX1_DMA_REQ_SPI2_R 26
|
|
||||||
#define MX1_DMA_REQ_SPI2_T 27
|
|
||||||
#define MX1_DMA_REQ_UART2_T 28
|
|
||||||
#define MX1_DMA_REQ_UART2_R 29
|
|
||||||
#define MX1_DMA_REQ_UART1_T 30
|
|
||||||
#define MX1_DMA_REQ_UART1_R 31
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This doesn't depend on IMX_NEEDS_DEPRECATED_SYMBOLS
|
|
||||||
* to not break drivers/usb/gadget/imx_udc. Should go
|
|
||||||
* away after this driver uses the new name.
|
|
||||||
*/
|
|
||||||
#define USBD_INT0 MX1_INT_USBD0
|
|
||||||
|
|
||||||
#endif /* ifndef __MACH_MX1_H__ */
|
|
|
@ -268,80 +268,6 @@ static void __init apx4devkit_init(void)
|
||||||
apx4devkit_phy_fixup);
|
apx4devkit_phy_fixup);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ENET0_MDC__GPIO_4_0 MXS_GPIO_NR(4, 0)
|
|
||||||
#define ENET0_MDIO__GPIO_4_1 MXS_GPIO_NR(4, 1)
|
|
||||||
#define ENET0_RX_EN__GPIO_4_2 MXS_GPIO_NR(4, 2)
|
|
||||||
#define ENET0_RXD0__GPIO_4_3 MXS_GPIO_NR(4, 3)
|
|
||||||
#define ENET0_RXD1__GPIO_4_4 MXS_GPIO_NR(4, 4)
|
|
||||||
#define ENET0_TX_EN__GPIO_4_6 MXS_GPIO_NR(4, 6)
|
|
||||||
#define ENET0_TXD0__GPIO_4_7 MXS_GPIO_NR(4, 7)
|
|
||||||
#define ENET0_TXD1__GPIO_4_8 MXS_GPIO_NR(4, 8)
|
|
||||||
#define ENET_CLK__GPIO_4_16 MXS_GPIO_NR(4, 16)
|
|
||||||
|
|
||||||
#define TX28_FEC_PHY_POWER MXS_GPIO_NR(3, 29)
|
|
||||||
#define TX28_FEC_PHY_RESET MXS_GPIO_NR(4, 13)
|
|
||||||
#define TX28_FEC_nINT MXS_GPIO_NR(4, 5)
|
|
||||||
|
|
||||||
static const struct gpio const tx28_gpios[] __initconst = {
|
|
||||||
{ ENET0_MDC__GPIO_4_0, GPIOF_OUT_INIT_LOW, "GPIO_4_0" },
|
|
||||||
{ ENET0_MDIO__GPIO_4_1, GPIOF_OUT_INIT_LOW, "GPIO_4_1" },
|
|
||||||
{ ENET0_RX_EN__GPIO_4_2, GPIOF_OUT_INIT_LOW, "GPIO_4_2" },
|
|
||||||
{ ENET0_RXD0__GPIO_4_3, GPIOF_OUT_INIT_LOW, "GPIO_4_3" },
|
|
||||||
{ ENET0_RXD1__GPIO_4_4, GPIOF_OUT_INIT_LOW, "GPIO_4_4" },
|
|
||||||
{ ENET0_TX_EN__GPIO_4_6, GPIOF_OUT_INIT_LOW, "GPIO_4_6" },
|
|
||||||
{ ENET0_TXD0__GPIO_4_7, GPIOF_OUT_INIT_LOW, "GPIO_4_7" },
|
|
||||||
{ ENET0_TXD1__GPIO_4_8, GPIOF_OUT_INIT_LOW, "GPIO_4_8" },
|
|
||||||
{ ENET_CLK__GPIO_4_16, GPIOF_OUT_INIT_LOW, "GPIO_4_16" },
|
|
||||||
{ TX28_FEC_PHY_POWER, GPIOF_OUT_INIT_LOW, "fec-phy-power" },
|
|
||||||
{ TX28_FEC_PHY_RESET, GPIOF_OUT_INIT_LOW, "fec-phy-reset" },
|
|
||||||
{ TX28_FEC_nINT, GPIOF_DIR_IN, "fec-int" },
|
|
||||||
};
|
|
||||||
|
|
||||||
static void __init tx28_post_init(void)
|
|
||||||
{
|
|
||||||
struct device_node *np;
|
|
||||||
struct platform_device *pdev;
|
|
||||||
struct pinctrl *pctl;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
enable_clk_enet_out();
|
|
||||||
|
|
||||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx28-fec");
|
|
||||||
pdev = of_find_device_by_node(np);
|
|
||||||
if (!pdev) {
|
|
||||||
pr_err("%s: failed to find fec device\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
pctl = pinctrl_get_select(&pdev->dev, "gpio_mode");
|
|
||||||
if (IS_ERR(pctl)) {
|
|
||||||
pr_err("%s: failed to get pinctrl state\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = gpio_request_array(tx28_gpios, ARRAY_SIZE(tx28_gpios));
|
|
||||||
if (ret) {
|
|
||||||
pr_err("%s: failed to request gpios: %d\n", __func__, ret);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Power up fec phy */
|
|
||||||
gpio_set_value(TX28_FEC_PHY_POWER, 1);
|
|
||||||
msleep(26); /* 25ms according to data sheet */
|
|
||||||
|
|
||||||
/* Mode strap pins */
|
|
||||||
gpio_set_value(ENET0_RX_EN__GPIO_4_2, 1);
|
|
||||||
gpio_set_value(ENET0_RXD0__GPIO_4_3, 1);
|
|
||||||
gpio_set_value(ENET0_RXD1__GPIO_4_4, 1);
|
|
||||||
|
|
||||||
udelay(100); /* minimum assertion time for nRST */
|
|
||||||
|
|
||||||
/* Deasserting FEC PHY RESET */
|
|
||||||
gpio_set_value(TX28_FEC_PHY_RESET, 1);
|
|
||||||
|
|
||||||
pinctrl_put(pctl);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init crystalfontz_init(void)
|
static void __init crystalfontz_init(void)
|
||||||
{
|
{
|
||||||
update_fec_mac_prop(OUI_CRYSTALFONTZ);
|
update_fec_mac_prop(OUI_CRYSTALFONTZ);
|
||||||
|
@ -501,9 +427,6 @@ static void __init mxs_machine_init(void)
|
||||||
of_platform_default_populate(NULL, NULL, parent);
|
of_platform_default_populate(NULL, NULL, parent);
|
||||||
|
|
||||||
mxs_restart_init();
|
mxs_restart_init();
|
||||||
|
|
||||||
if (of_machine_is_compatible("karo,tx28"))
|
|
||||||
tx28_post_init();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MXS_CLKCTRL_RESET_CHIP (1 << 1)
|
#define MXS_CLKCTRL_RESET_CHIP (1 << 1)
|
||||||
|
|
|
@ -45,10 +45,13 @@ static void __iomem *ccm __initdata;
|
||||||
#define CCM_PCDR (ccm + 0x0020)
|
#define CCM_PCDR (ccm + 0x0020)
|
||||||
#define SCM_GCCR (ccm + 0x0810)
|
#define SCM_GCCR (ccm + 0x0810)
|
||||||
|
|
||||||
static void __init _mx1_clocks_init(unsigned long fref)
|
static void __init mx1_clocks_init_dt(struct device_node *np)
|
||||||
{
|
{
|
||||||
|
ccm = of_iomap(np, 0);
|
||||||
|
BUG_ON(!ccm);
|
||||||
|
|
||||||
clk[IMX1_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
|
clk[IMX1_CLK_DUMMY] = imx_clk_fixed("dummy", 0);
|
||||||
clk[IMX1_CLK_CLK32] = imx_obtain_fixed_clock("clk32", fref);
|
clk[IMX1_CLK_CLK32] = imx_obtain_fixed_clock("clk32", 32768);
|
||||||
clk[IMX1_CLK_CLK16M_EXT] = imx_clk_fixed("clk16m_ext", 16000000);
|
clk[IMX1_CLK_CLK16M_EXT] = imx_clk_fixed("clk16m_ext", 16000000);
|
||||||
clk[IMX1_CLK_CLK16M] = imx_clk_gate("clk16m", "clk16m_ext", CCM_CSCR, 17);
|
clk[IMX1_CLK_CLK16M] = imx_clk_gate("clk16m", "clk16m_ext", CCM_CSCR, 17);
|
||||||
clk[IMX1_CLK_CLK32_PREMULT] = imx_clk_fixed_factor("clk32_premult", "clk32", 512, 1);
|
clk[IMX1_CLK_CLK32_PREMULT] = imx_clk_fixed_factor("clk32_premult", "clk32", 512, 1);
|
||||||
|
@ -74,45 +77,6 @@ static void __init _mx1_clocks_init(unsigned long fref)
|
||||||
clk[IMX1_CLK_USBD_GATE] = imx_clk_gate("usbd_gate", "clk48m", SCM_GCCR, 0);
|
clk[IMX1_CLK_USBD_GATE] = imx_clk_gate("usbd_gate", "clk48m", SCM_GCCR, 0);
|
||||||
|
|
||||||
imx_check_clocks(clk, ARRAY_SIZE(clk));
|
imx_check_clocks(clk, ARRAY_SIZE(clk));
|
||||||
}
|
|
||||||
|
|
||||||
int __init mx1_clocks_init(unsigned long fref)
|
|
||||||
{
|
|
||||||
ccm = ioremap(MX1_CCM_BASE_ADDR, SZ_4K);
|
|
||||||
BUG_ON(!ccm);
|
|
||||||
|
|
||||||
_mx1_clocks_init(fref);
|
|
||||||
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx-gpt.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx-gpt.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_DMA_GATE], "ahb", "imx1-dma");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-dma");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-uart.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.1");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_HCLK], "ipg", "imx1-uart.1");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER1], "per", "imx1-uart.2");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_UART3_GATE], "ipg", "imx1-uart.2");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_HCLK], NULL, "imx1-i2c.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-cspi.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-cspi.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-cspi.1");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-cspi.1");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_PER2], "per", "imx1-fb.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ipg", "imx1-fb.0");
|
|
||||||
clk_register_clkdev(clk[IMX1_CLK_DUMMY], "ahb", "imx1-fb.0");
|
|
||||||
|
|
||||||
mxc_timer_init(MX1_TIM1_BASE_ADDR, MX1_TIM1_INT, GPT_TYPE_IMX1);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void __init mx1_clocks_init_dt(struct device_node *np)
|
|
||||||
{
|
|
||||||
ccm = of_iomap(np, 0);
|
|
||||||
BUG_ON(!ccm);
|
|
||||||
|
|
||||||
_mx1_clocks_init(32768);
|
|
||||||
|
|
||||||
clk_data.clks = clk;
|
clk_data.clks = clk;
|
||||||
clk_data.clk_num = ARRAY_SIZE(clk);
|
clk_data.clk_num = ARRAY_SIZE(clk);
|
||||||
|
|
Loading…
Reference in New Issue