Merge branch 'for-next/imx'
Conflicts: arch/arm/boards/Makefile
This commit is contained in:
commit
5034e4eacc
|
@ -0,0 +1,20 @@
|
|||
Freescale i.MX OCOTP (On-Chip OTP)
|
||||
|
||||
Required properties:
|
||||
|
||||
- compatible: fsl,imx6q-ocotp
|
||||
- reg: physical register base and size
|
||||
|
||||
Optional properties:
|
||||
|
||||
- barebox,provide-mac-address: Provide MAC addresses for ethernet devices. This
|
||||
can be multiple entries in the form <&phandle regofs> to specify a MAC
|
||||
address to a ethernet device.
|
||||
|
||||
Example:
|
||||
|
||||
ocotp1: ocotp@021bc000 {
|
||||
compatible = "fsl,imx6q-ocotp";
|
||||
reg = <0x021bc000 0x4000>;
|
||||
barebox,provide-mac-address = <&fec 0x620>;
|
||||
};
|
|
@ -36,6 +36,7 @@ obj-$(CONFIG_MACH_FREESCALE_MX51_PDK) += freescale-mx51-pdk/
|
|||
obj-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += freescale-mx53-loco/
|
||||
obj-$(CONFIG_MACH_FREESCALE_MX53_SMD) += freescale-mx53-smd/
|
||||
obj-$(CONFIG_MACH_GE863) += telit-evk-pro3/
|
||||
obj-$(CONFIG_MACH_GK802) += gk802/
|
||||
obj-$(CONFIG_MACH_GLOBALSCALE_GURUPLUG) += globalscale-guruplug/
|
||||
obj-$(CONFIG_MACH_GLOBALSCALE_MIRABOX) += globalscale-mirabox/
|
||||
obj-$(CONFIG_MACH_GUF_CUPID) += guf-cupid/
|
||||
|
@ -64,6 +65,7 @@ obj-$(CONFIG_MACH_PCM038) += pcm038/
|
|||
obj-$(CONFIG_MACH_PCM043) += pcm043/
|
||||
obj-$(CONFIG_MACH_PCM049) += pcm049/
|
||||
obj-$(CONFIG_MACH_PCM051) += pcm051/
|
||||
obj-$(CONFIG_MACH_PHYTEC_PFLA02) += phytec-pfla02/
|
||||
obj-$(CONFIG_MACH_PLATHOME_OPENBLOCKS_AX3) += plathome-openblocks-ax3/
|
||||
obj-$(CONFIG_MACH_PM9261) += pm9261/
|
||||
obj-$(CONFIG_MACH_PM9263) += pm9263/
|
||||
|
@ -81,6 +83,7 @@ obj-$(CONFIG_MACH_TNY_A9263) += tny-a926x/
|
|||
obj-$(CONFIG_MACH_TNY_A9G20) += tny-a926x/
|
||||
obj-$(CONFIG_MACH_TOSHIBA_AC100) += toshiba-ac100/
|
||||
obj-$(CONFIG_MACH_TQMA53) += tqma53/
|
||||
obj-$(CONFIG_MACH_TQMA6X) += tqma6x/
|
||||
obj-$(CONFIG_MACH_TX25) += karo-tx25/
|
||||
obj-$(CONFIG_MACH_TX28) += karo-tx28/
|
||||
obj-$(CONFIG_MACH_TX51) += karo-tx51/
|
||||
|
|
|
@ -106,26 +106,6 @@ static int sabrelite_ksz9021rn_setup(void)
|
|||
*/
|
||||
fs_initcall(sabrelite_ksz9021rn_setup);
|
||||
|
||||
static inline int imx6_iim_register_fec_ethaddr(void)
|
||||
{
|
||||
u32 value;
|
||||
u8 buf[6];
|
||||
|
||||
value = readl(MX6_OCOTP_BASE_ADDR + 0x630);
|
||||
buf[0] = (value >> 8);
|
||||
buf[1] = value;
|
||||
|
||||
value = readl(MX6_OCOTP_BASE_ADDR + 0x620);
|
||||
buf[2] = value >> 24;
|
||||
buf[3] = value >> 16;
|
||||
buf[4] = value >> 8;
|
||||
buf[5] = value;
|
||||
|
||||
eth_register_ethaddr(0, buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void sabrelite_ehci_init(void)
|
||||
{
|
||||
imx6_usb_phy2_disable_oc();
|
||||
|
@ -157,9 +137,6 @@ static int sabrelite_coredevices_init(void)
|
|||
{
|
||||
phy_register_fixup_for_uid(PHY_ID_KSZ9021, MICREL_PHY_ID_MASK,
|
||||
ksz9021rn_phy_fixup);
|
||||
|
||||
imx6_iim_register_fec_ethaddr();
|
||||
|
||||
return 0;
|
||||
}
|
||||
coredevice_initcall(sabrelite_coredevices_init);
|
||||
|
|
|
@ -80,26 +80,6 @@ static void sabresd_phy_reset(void)
|
|||
gpio_set_value(IMX_GPIO_NR(1, 25), 1);
|
||||
}
|
||||
|
||||
static inline int imx6_iim_register_fec_ethaddr(void)
|
||||
{
|
||||
u32 value;
|
||||
u8 buf[6];
|
||||
|
||||
value = readl(MX6_OCOTP_BASE_ADDR + 0x630);
|
||||
buf[0] = (value >> 8);
|
||||
buf[1] = value;
|
||||
|
||||
value = readl(MX6_OCOTP_BASE_ADDR + 0x620);
|
||||
buf[2] = value >> 24;
|
||||
buf[3] = value >> 16;
|
||||
buf[4] = value >> 8;
|
||||
buf[5] = value;
|
||||
|
||||
eth_register_ethaddr(0, buf);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sabresd_devices_init(void)
|
||||
{
|
||||
armlinux_set_bootparams((void *)0x10000100);
|
||||
|
@ -118,8 +98,6 @@ static int sabresd_coredevices_init(void)
|
|||
phy_register_fixup_for_uid(PHY_ID_AR8031, AR_PHY_ID_MASK,
|
||||
ar8031_phy_fixup);
|
||||
|
||||
imx6_iim_register_fec_ethaddr();
|
||||
|
||||
return 0;
|
||||
}
|
||||
/*
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
obj-y += board.o flash-header.dcd.o
|
||||
extra-y += flash-header.dcd.S flash-header.dcd
|
||||
lwl-y += lowlevel.o
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Philipp Zabel
|
||||
*
|
||||
* 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 <asm/armlinux.h>
|
||||
#include <asm/io.h>
|
||||
#include <bootsource.h>
|
||||
#include <common.h>
|
||||
#include <environment.h>
|
||||
#include <envfs.h>
|
||||
#include <gpio.h>
|
||||
#include <init.h>
|
||||
#include <mach/generic.h>
|
||||
#include <mach/imx6-regs.h>
|
||||
#include <mach/imx6.h>
|
||||
#include <mfd/imx6q-iomuxc-gpr.h>
|
||||
#include <sizes.h>
|
||||
|
||||
#define GK802_GPIO_RECOVERY_BTN IMX_GPIO_NR(3, 16) /* recovery button */
|
||||
#define GK802_GPIO_RTL8192_PDN IMX_GPIO_NR(2, 0) /* RTL8192CU powerdown */
|
||||
|
||||
static int gk802_env_init(void)
|
||||
{
|
||||
char *bootsource_name;
|
||||
char *barebox_name;
|
||||
char *default_environment_name;
|
||||
|
||||
if (!of_machine_is_compatible("zealz,imx6q-gk802"))
|
||||
return 0;
|
||||
|
||||
/* Keep RTL8192CU disabled */
|
||||
gpio_direction_output(GK802_GPIO_RTL8192_PDN, 1);
|
||||
|
||||
gpio_direction_input(GK802_GPIO_RECOVERY_BTN);
|
||||
setenv("recovery", gpio_get_value(GK802_GPIO_RECOVERY_BTN) ? "0" : "1");
|
||||
|
||||
if (bootsource_get() != BOOTSOURCE_MMC)
|
||||
return 0;
|
||||
|
||||
switch (bootsource_get_instance()) {
|
||||
case 2:
|
||||
bootsource_name = "mmc2";
|
||||
barebox_name = "mmc2.barebox";
|
||||
default_environment_name = "mmc2.bareboxenv";
|
||||
default_environment_path = "/dev/mmc2.bareboxenv";
|
||||
break;
|
||||
case 3:
|
||||
bootsource_name = "mmc3";
|
||||
barebox_name = "mmc3.barebox";
|
||||
default_environment_name = "mmc3.bareboxenv";
|
||||
default_environment_path = "/dev/mmc3.bareboxenv";
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
device_detect_by_name(bootsource_name);
|
||||
devfs_add_partition(bootsource_name, 0x00000, SZ_512K, DEVFS_PARTITION_FIXED, barebox_name);
|
||||
devfs_add_partition(bootsource_name, SZ_512K, SZ_512K, DEVFS_PARTITION_FIXED, default_environment_name);
|
||||
|
||||
return 0;
|
||||
}
|
||||
late_initcall(gk802_env_init);
|
||||
|
||||
static int gk802_console_init(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("zealz,imx6q-gk802"))
|
||||
return 0;
|
||||
|
||||
imx6_init_lowlevel();
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(gk802_console_init);
|
|
@ -0,0 +1,7 @@
|
|||
#!/bin/sh
|
||||
|
||||
# board defaults, do not change in running system. Change /env/config
|
||||
# instead
|
||||
|
||||
global.hostname=gk802
|
||||
global.linux.bootargs.base="console=ttymxc3,115200"
|
|
@ -0,0 +1,96 @@
|
|||
loadaddr 0x10000000
|
||||
soc imx6
|
||||
dcdofs 0x400
|
||||
wm 32 0x020e05a8 0x00000030
|
||||
wm 32 0x020e05b0 0x00000030
|
||||
wm 32 0x020e0524 0x00000030
|
||||
wm 32 0x020e051c 0x00000030
|
||||
wm 32 0x020e0518 0x00000030
|
||||
wm 32 0x020e050c 0x00000030
|
||||
wm 32 0x020e05b8 0x00000030
|
||||
wm 32 0x020e05c0 0x00000030
|
||||
wm 32 0x020e05ac 0x00020030
|
||||
wm 32 0x020e05b4 0x00020030
|
||||
wm 32 0x020e0528 0x00020030
|
||||
wm 32 0x020e0520 0x00020030
|
||||
wm 32 0x020e0514 0x00020030
|
||||
wm 32 0x020e0510 0x00020030
|
||||
wm 32 0x020e05bc 0x00020030
|
||||
wm 32 0x020e05c4 0x00020030
|
||||
wm 32 0x020e056c 0x00020030
|
||||
wm 32 0x020e0578 0x00020030
|
||||
wm 32 0x020e0588 0x00020030
|
||||
wm 32 0x020e0594 0x00020030
|
||||
wm 32 0x020e057c 0x00020030
|
||||
wm 32 0x020e0590 0x00003000
|
||||
wm 32 0x020e0598 0x00003000
|
||||
wm 32 0x020e058c 0x00000000
|
||||
wm 32 0x020e059c 0x00003030
|
||||
wm 32 0x020e05a0 0x00003030
|
||||
wm 32 0x020e0784 0x00000030
|
||||
wm 32 0x020e0788 0x00000030
|
||||
wm 32 0x020e0794 0x00000030
|
||||
wm 32 0x020e079c 0x00000030
|
||||
wm 32 0x020e07a0 0x00000030
|
||||
wm 32 0x020e07a4 0x00000030
|
||||
wm 32 0x020e07a8 0x00000030
|
||||
wm 32 0x020e0748 0x00000030
|
||||
wm 32 0x020e074c 0x00000030
|
||||
wm 32 0x020e0750 0x00020000
|
||||
wm 32 0x020e0758 0x00000000
|
||||
wm 32 0x020e0774 0x00020000
|
||||
wm 32 0x020e078c 0x00000030
|
||||
wm 32 0x020e0798 0x000c0000
|
||||
wm 32 0x021b081c 0x33333333
|
||||
wm 32 0x021b0820 0x33333333
|
||||
wm 32 0x021b0824 0x33333333
|
||||
wm 32 0x021b0828 0x33333333
|
||||
wm 32 0x021b481c 0x33333333
|
||||
wm 32 0x021b4820 0x33333333
|
||||
wm 32 0x021b4824 0x33333333
|
||||
wm 32 0x021b4828 0x33333333
|
||||
wm 32 0x021b0018 0x00081740
|
||||
wm 32 0x021b001c 0x00008000
|
||||
wm 32 0x021b000c 0x555a7975
|
||||
wm 32 0x021b0010 0xff538e64
|
||||
wm 32 0x021b0014 0x01ff00db
|
||||
wm 32 0x021b002c 0x000026d2
|
||||
wm 32 0x021b0030 0x005b0e21
|
||||
wm 32 0x021b0008 0x09444040
|
||||
wm 32 0x021b0004 0x00025576
|
||||
wm 32 0x021b0040 0x00000027
|
||||
wm 32 0x021b0000 0x831a0000
|
||||
wm 32 0x021b001c 0x04088032
|
||||
wm 32 0x021b001c 0x0408803a
|
||||
wm 32 0x021b001c 0x00008033
|
||||
wm 32 0x021b001c 0x0000803b
|
||||
wm 32 0x021b001c 0x00428031
|
||||
wm 32 0x021b001c 0x00428039
|
||||
wm 32 0x021b001c 0x09408030
|
||||
wm 32 0x021b001c 0x09408038
|
||||
wm 32 0x021b001c 0x04008040
|
||||
wm 32 0x021b001c 0x04008048
|
||||
wm 32 0x021b0800 0xa1380003
|
||||
wm 32 0x021b4800 0xa1380003
|
||||
wm 32 0x021b0020 0x00005800
|
||||
wm 32 0x021b0818 0x00000007
|
||||
wm 32 0x021b4818 0x00000007
|
||||
wm 32 0x021b083c 0x427b030a
|
||||
wm 32 0x021b0840 0x02740269
|
||||
wm 32 0x021b483c 0x43100313
|
||||
wm 32 0x021b4840 0x027d024d
|
||||
wm 32 0x021b0848 0x46384240
|
||||
wm 32 0x021b4848 0x4442414a
|
||||
wm 32 0x021b0850 0x45444645
|
||||
wm 32 0x021b4850 0x4a354946
|
||||
wm 32 0x021b080c 0x001f001f
|
||||
wm 32 0x021b0810 0x001f001f
|
||||
wm 32 0x021b480c 0x00440044
|
||||
wm 32 0x021b4810 0x00440044
|
||||
wm 32 0x021b08b8 0x00000800
|
||||
wm 32 0x021b48b8 0x00000800
|
||||
wm 32 0x021b001c 0x00000000
|
||||
wm 32 0x021b0404 0x00011006
|
||||
wm 32 0x020e0010 0xf00000ff
|
||||
wm 32 0x020e0018 0x007f007f
|
||||
wm 32 0x020e001c 0x007f007f
|
|
@ -0,0 +1,18 @@
|
|||
#include <common.h>
|
||||
#include <sizes.h>
|
||||
#include <asm/barebox-arm-head.h>
|
||||
#include <asm/barebox-arm.h>
|
||||
|
||||
extern char __dtb_imx6q_gk802_start[];
|
||||
|
||||
ENTRY_FUNCTION(start_imx6_gk802)(void)
|
||||
{
|
||||
uint32_t fdt;
|
||||
|
||||
__barebox_arm_head();
|
||||
|
||||
arm_cpu_lowlevel_init();
|
||||
|
||||
fdt = (uint32_t)__dtb_imx6q_gk802_start - get_runtime_offset();
|
||||
barebox_arm_entry(0x10000000, SZ_1G, fdt);
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
obj-y += board.o
|
||||
obj-y += flash-header-phytec-pfla02-1gib.dcd.o flash-header-phytec-pfla02-2gib.dcd.o
|
||||
extra-y += flash-header-phytec-pfla02-1gib.dcd.S flash-header-phytec-pfla02-2gib.dcd.S
|
||||
extra-y += flash-header-phytec-pfla02-1gib.dcd flash-header-phytec-pfla02-2gib.dcd
|
||||
lwl-y += lowlevel.o
|
|
@ -0,0 +1,59 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <gpio.h>
|
||||
#include <init.h>
|
||||
#include <of.h>
|
||||
|
||||
#include <mach/imx6.h>
|
||||
|
||||
#define ETH_PHY_RST IMX_GPIO_NR(3, 23)
|
||||
|
||||
static int eth_phy_reset(void)
|
||||
{
|
||||
gpio_request(ETH_PHY_RST, "phy reset");
|
||||
gpio_direction_output(ETH_PHY_RST, 0);
|
||||
mdelay(1);
|
||||
gpio_set_value(ETH_PHY_RST, 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int phytec_pfla02_init(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("phytec,imx6q-pfla02"))
|
||||
return 0;
|
||||
|
||||
eth_phy_reset();
|
||||
|
||||
return 0;
|
||||
}
|
||||
device_initcall(phytec_pfla02_init);
|
||||
|
||||
static int phytec_pfla02_core_init(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("phytec,imx6q-pfla02"))
|
||||
return 0;
|
||||
|
||||
imx6_init_lowlevel();
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(phytec_pfla02_core_init);
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
#define SETUP_1GIB_2GIB \
|
||||
wm 32 0x021b0040 0x00000017; \
|
||||
wm 32 0x021b0000 0xc21a0000
|
||||
|
||||
#include "flash-header-phytec-pfla02.h"
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
#define SETUP_1GIB_2GIB \
|
||||
wm 32 0x021b0040 0x00000027; \
|
||||
wm 32 0x021b0000 0xC31A0000
|
||||
|
||||
#include "flash-header-phytec-pfla02.h"
|
|
@ -0,0 +1,99 @@
|
|||
soc imx6
|
||||
loadaddr 0x20000000
|
||||
dcdofs 0x400
|
||||
|
||||
wm 32 0x020e05a8 0x00000030
|
||||
wm 32 0x020e05b0 0x00000030
|
||||
wm 32 0x020e0524 0x00000030
|
||||
wm 32 0x020e051c 0x00000030
|
||||
wm 32 0x020e0518 0x00000030
|
||||
wm 32 0x020e050c 0x00000030
|
||||
wm 32 0x020e05b8 0x00000030
|
||||
wm 32 0x020e05c0 0x00000030
|
||||
wm 32 0x020e05ac 0x00020030
|
||||
wm 32 0x020e05b4 0x00020030
|
||||
wm 32 0x020e0528 0x00020030
|
||||
wm 32 0x020e0520 0x00020030
|
||||
wm 32 0x020e0514 0x00020030
|
||||
wm 32 0x020e0510 0x00020030
|
||||
wm 32 0x020e05bc 0x00020030
|
||||
wm 32 0x020e05c4 0x00020030
|
||||
wm 32 0x020e056c 0x00020030
|
||||
wm 32 0x020e0578 0x00020030
|
||||
wm 32 0x020e0588 0x00020030
|
||||
wm 32 0x020e0594 0x00020030
|
||||
wm 32 0x020e057c 0x00020030
|
||||
wm 32 0x020e0590 0x00003000
|
||||
wm 32 0x020e0598 0x00003000
|
||||
wm 32 0x020e058c 0x00000000
|
||||
wm 32 0x020e059c 0x00003030
|
||||
wm 32 0x020e05a0 0x00003030
|
||||
wm 32 0x020e0784 0x00000030
|
||||
wm 32 0x020e0788 0x00000030
|
||||
wm 32 0x020e0794 0x00000030
|
||||
wm 32 0x020e079c 0x00000030
|
||||
wm 32 0x020e07a0 0x00000030
|
||||
wm 32 0x020e07a4 0x00000030
|
||||
wm 32 0x020e07a8 0x00000030
|
||||
wm 32 0x020e0748 0x00000030
|
||||
wm 32 0x020e074c 0x00000030
|
||||
wm 32 0x020e0750 0x00020000
|
||||
wm 32 0x020e0758 0x00000000
|
||||
wm 32 0x020e0774 0x00020000
|
||||
wm 32 0x020e078c 0x00000030
|
||||
wm 32 0x020e0798 0x000c0000
|
||||
wm 32 0x021b081c 0x33333333
|
||||
wm 32 0x021b0820 0x33333333
|
||||
wm 32 0x021b0824 0x33333333
|
||||
wm 32 0x021b0828 0x33333333
|
||||
wm 32 0x021b481c 0x33333333
|
||||
wm 32 0x021b4820 0x33333333
|
||||
wm 32 0x021b4824 0x33333333
|
||||
wm 32 0x021b4828 0x33333333
|
||||
wm 32 0x021b0018 0x00081740
|
||||
wm 32 0x021b001c 0x00008000
|
||||
wm 32 0x021b000c 0x555a7975
|
||||
wm 32 0x021b0010 0xff538e64
|
||||
wm 32 0x021b0014 0x01ff00db
|
||||
wm 32 0x021b002c 0x000026d2
|
||||
wm 32 0x021b0030 0x005b0e21
|
||||
wm 32 0x021b0008 0x09444040
|
||||
wm 32 0x021b0004 0x00025576
|
||||
|
||||
SETUP_1GIB_2GIB
|
||||
|
||||
wm 32 0x021b001c 0x04088032
|
||||
wm 32 0x021b001c 0x0408803a
|
||||
wm 32 0x021b001c 0x00008033
|
||||
wm 32 0x021b001c 0x0000803b
|
||||
wm 32 0x021b001c 0x00428031
|
||||
wm 32 0x021b001c 0x00428039
|
||||
wm 32 0x021b001c 0x09408030
|
||||
wm 32 0x021b001c 0x09408038
|
||||
wm 32 0x021b001c 0x04008040
|
||||
wm 32 0x021b001c 0x04008048
|
||||
wm 32 0x021b0800 0xa1380003
|
||||
wm 32 0x021b4800 0xa1380003
|
||||
wm 32 0x021b0020 0x00005800
|
||||
wm 32 0x021b0818 0x00022227
|
||||
wm 32 0x021b4818 0x00022227
|
||||
wm 32 0x021b083c 0x433c033f
|
||||
wm 32 0x021b0840 0x033e033d
|
||||
wm 32 0x021b483c 0x43490351
|
||||
wm 32 0x021b4840 0x0344032f
|
||||
wm 32 0x021b0848 0x4a434146
|
||||
wm 32 0x021b4848 0x4745434b
|
||||
wm 32 0x021b0850 0x3d3d433a
|
||||
wm 32 0x021b4850 0x48334b3e
|
||||
wm 32 0x021b080c 0x000f0011
|
||||
wm 32 0x021b0810 0x00200022
|
||||
wm 32 0x021b480c 0x0033002e
|
||||
wm 32 0x021b4810 0x003e003b
|
||||
wm 32 0x021b08b8 0x00000800
|
||||
wm 32 0x021b48b8 0x00000800
|
||||
wm 32 0x021b001c 0x00000000
|
||||
wm 32 0x021b0404 0x00011006
|
||||
wm 32 0x020e0010 0xf00000ff
|
||||
wm 32 0x020e0018 0x007f007f
|
||||
wm 32 0x020e001c 0x007f007f
|
||||
wm 32 0x020c8000 0x80002021
|
|
@ -0,0 +1,57 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Sascha Hauer <s.hauer@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.
|
||||
*
|
||||
*/
|
||||
#include <debug_ll.h>
|
||||
#include <common.h>
|
||||
#include <sizes.h>
|
||||
#include <io.h>
|
||||
#include <asm/barebox-arm-head.h>
|
||||
#include <asm/barebox-arm.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <mach/imx6-mmdc.h>
|
||||
#include <mach/imx6.h>
|
||||
|
||||
extern char __dtb_imx6q_phytec_pbab01_start[];
|
||||
|
||||
ENTRY_FUNCTION(start_phytec_pbab01_1gib)(void)
|
||||
{
|
||||
uint32_t fdt;
|
||||
|
||||
__barebox_arm_head();
|
||||
|
||||
arm_cpu_lowlevel_init();
|
||||
|
||||
arm_setup_stack(0x00920000 - 8);
|
||||
|
||||
fdt = (uint32_t)__dtb_imx6q_phytec_pbab01_start - get_runtime_offset();
|
||||
|
||||
barebox_arm_entry(0x10000000, SZ_1G, fdt);
|
||||
}
|
||||
|
||||
ENTRY_FUNCTION(start_phytec_pbab01_2gib)(void)
|
||||
{
|
||||
uint32_t fdt;
|
||||
|
||||
__barebox_arm_head();
|
||||
|
||||
arm_cpu_lowlevel_init();
|
||||
|
||||
arm_setup_stack(0x00920000 - 8);
|
||||
|
||||
fdt = (uint32_t)__dtb_imx6q_phytec_pbab01_start - get_runtime_offset();
|
||||
|
||||
barebox_arm_entry(0x10000000, SZ_2G, fdt);
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
obj-y += board.o
|
||||
obj-y += flash-header-tqma6q.dcd.o flash-header-tqma6dl.dcd.o
|
||||
extra-y += flash-header-tqma6q.dcd.S flash-header-tqma6dl.dcd.S
|
||||
extra-y += flash-header-tqma6q.dcd flash-header-tqma6dl.dcd
|
||||
lwl-y += lowlevel.o
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <generated/mach-types.h>
|
||||
#include <environment.h>
|
||||
#include <bootsource.h>
|
||||
#include <partition.h>
|
||||
#include <common.h>
|
||||
#include <envfs.h>
|
||||
#include <sizes.h>
|
||||
#include <init.h>
|
||||
#include <gpio.h>
|
||||
#include <fec.h>
|
||||
|
||||
#include <linux/micrel_phy.h>
|
||||
#include <mfd/stmpe-i2c.h>
|
||||
|
||||
#include <asm/armlinux.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#include <mach/devices-imx6.h>
|
||||
#include <mach/imx6-regs.h>
|
||||
#include <mach/iomux-mx6.h>
|
||||
#include <mach/imx6-mmdc.h>
|
||||
#include <mach/generic.h>
|
||||
#include <mach/imx6.h>
|
||||
#include <mach/bbu.h>
|
||||
|
||||
#define RQ7_GPIO_ENET_PHYADD2 IMX_GPIO_NR(6, 30)
|
||||
#define RQ7_GPIO_ENET_MODE0 IMX_GPIO_NR(6, 25)
|
||||
#define RQ7_GPIO_ENET_MODE1 IMX_GPIO_NR(6, 27)
|
||||
#define RQ7_GPIO_ENET_MODE2 IMX_GPIO_NR(6, 28)
|
||||
#define RQ7_GPIO_ENET_MODE3 IMX_GPIO_NR(6, 29)
|
||||
#define RQ7_GPIO_ENET_EN_CLK125 IMX_GPIO_NR(6, 24)
|
||||
|
||||
static iomux_v3_cfg_t tqma6x_pads_gpio[] = {
|
||||
MX6Q_PAD_RGMII_RXC__GPIO_6_30,
|
||||
MX6Q_PAD_RGMII_RD0__GPIO_6_25,
|
||||
MX6Q_PAD_RGMII_RD1__GPIO_6_27,
|
||||
MX6Q_PAD_RGMII_RD2__GPIO_6_28,
|
||||
MX6Q_PAD_RGMII_RD3__GPIO_6_29,
|
||||
MX6Q_PAD_RGMII_RX_CTL__GPIO_6_24,
|
||||
};
|
||||
|
||||
static void mmd_write_reg(struct phy_device *dev, int device, int reg, int val)
|
||||
{
|
||||
phy_write(dev, 0x0d, device);
|
||||
phy_write(dev, 0x0e, reg);
|
||||
phy_write(dev, 0x0d, (1 << 14) | device);
|
||||
phy_write(dev, 0x0e, val);
|
||||
}
|
||||
|
||||
static int ksz9031rn_phy_fixup(struct phy_device *dev)
|
||||
{
|
||||
/*
|
||||
* min rx data delay, max rx/tx clock delay,
|
||||
* min rx/tx control delay
|
||||
*/
|
||||
mmd_write_reg(dev, 2, 4, 0);
|
||||
mmd_write_reg(dev, 2, 5, 0);
|
||||
mmd_write_reg(dev, 2, 8, 0x003ff);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tqma6x_enet_init(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("tq,mba6x"))
|
||||
return 0;
|
||||
|
||||
mxc_iomux_v3_setup_multiple_pads(tqma6x_pads_gpio, ARRAY_SIZE(tqma6x_pads_gpio));
|
||||
gpio_direction_output(RQ7_GPIO_ENET_PHYADD2, 0);
|
||||
gpio_direction_output(RQ7_GPIO_ENET_MODE0, 1);
|
||||
gpio_direction_output(RQ7_GPIO_ENET_MODE1, 1);
|
||||
gpio_direction_output(RQ7_GPIO_ENET_MODE2, 1);
|
||||
gpio_direction_output(RQ7_GPIO_ENET_MODE3, 1);
|
||||
gpio_direction_output(RQ7_GPIO_ENET_EN_CLK125, 1);
|
||||
|
||||
gpio_direction_output(25, 0);
|
||||
mdelay(50);
|
||||
|
||||
gpio_direction_output(25, 1);
|
||||
mdelay(50);
|
||||
|
||||
phy_register_fixup_for_uid(PHY_ID_KSZ9031, MICREL_PHY_ID_MASK,
|
||||
ksz9031rn_phy_fixup);
|
||||
|
||||
return 0;
|
||||
}
|
||||
fs_initcall(tqma6x_enet_init);
|
||||
|
||||
extern char flash_header_tqma6dl_start[];
|
||||
extern char flash_header_tqma6dl_end[];
|
||||
|
||||
extern char flash_header_tqma6q_start[];
|
||||
extern char flash_header_tqma6q_end[];
|
||||
|
||||
static int tqma6x_env_init(void)
|
||||
{
|
||||
void *flash_header_start;
|
||||
void *flash_header_end;
|
||||
|
||||
if (of_machine_is_compatible("tq,tqma6s")) {
|
||||
flash_header_start = (void *)flash_header_tqma6dl_start;
|
||||
flash_header_end = (void *)flash_header_tqma6dl_end;
|
||||
} else if (of_machine_is_compatible("tq,tqma6q")) {
|
||||
flash_header_start = (void *)flash_header_tqma6q_start;
|
||||
flash_header_end = (void *)flash_header_tqma6q_end;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
|
||||
devfs_add_partition("m25p0", 0, SZ_512K, DEVFS_PARTITION_FIXED, "m25p0.barebox");
|
||||
|
||||
imx6_bbu_internal_spi_i2c_register_handler("spiflash", "/dev/m25p0.barebox",
|
||||
BBU_HANDLER_FLAG_DEFAULT, (void *)flash_header_start,
|
||||
flash_header_end - flash_header_start, 0);
|
||||
imx6_bbu_internal_mmc_register_handler("emmc", "/dev/mmc2.boot0",
|
||||
0, (void *)flash_header_start, flash_header_end - flash_header_start, 0);
|
||||
|
||||
device_detect_by_name("mmc2");
|
||||
|
||||
default_environment_path = "/dev/mmc2.boot1";
|
||||
|
||||
return 0;
|
||||
}
|
||||
late_initcall(tqma6x_env_init);
|
||||
|
||||
static int tqma6x_core_init(void)
|
||||
{
|
||||
if (!of_machine_is_compatible("tq,mba6x"))
|
||||
return 0;
|
||||
|
||||
imx6_init_lowlevel();
|
||||
|
||||
return 0;
|
||||
}
|
||||
postcore_initcall(tqma6x_core_init);
|
|
@ -0,0 +1,99 @@
|
|||
soc imx6
|
||||
loadaddr 0x20000000
|
||||
dcdofs 0x400
|
||||
wm 32 0x020e04bc 0x00000030
|
||||
wm 32 0x020e04c0 0x00000030
|
||||
wm 32 0x020e04c4 0x00000030
|
||||
wm 32 0x020e04c8 0x00000030
|
||||
wm 32 0x020e04cc 0x00000030
|
||||
wm 32 0x020e04d0 0x00000030
|
||||
wm 32 0x020e04d4 0x00000030
|
||||
wm 32 0x020e04d8 0x00000030
|
||||
wm 32 0x020e0764 0x00000030
|
||||
wm 32 0x020e0770 0x00000030
|
||||
wm 32 0x020e0778 0x00000030
|
||||
wm 32 0x020e077c 0x00000030
|
||||
wm 32 0x020e0780 0x00000030
|
||||
wm 32 0x020e0784 0x00000030
|
||||
wm 32 0x020e078c 0x00000030
|
||||
wm 32 0x020e0748 0x00000030
|
||||
wm 32 0x020e074c 0x00000030
|
||||
wm 32 0x020e076c 0x00000030
|
||||
wm 32 0x020e0470 0x00020030
|
||||
wm 32 0x020e0474 0x00020030
|
||||
wm 32 0x020e0478 0x00020030
|
||||
wm 32 0x020e047c 0x00020030
|
||||
wm 32 0x020e0480 0x00020030
|
||||
wm 32 0x020e0484 0x00020030
|
||||
wm 32 0x020e0488 0x00020030
|
||||
wm 32 0x020e048c 0x00020030
|
||||
wm 32 0x020e0464 0x00020030
|
||||
wm 32 0x020e0490 0x00020030
|
||||
wm 32 0x020e04ac 0x00020030
|
||||
wm 32 0x020e04b0 0x00020030
|
||||
wm 32 0x020e0494 0x000e0030
|
||||
wm 32 0x020e04a4 0x00003000
|
||||
wm 32 0x020e04a8 0x00003000
|
||||
wm 32 0x020e04b4 0x00003030
|
||||
wm 32 0x020e04b8 0x00003030
|
||||
wm 32 0x020e0750 0x00020000
|
||||
wm 32 0x020e0760 0x00020000
|
||||
wm 32 0x020e0754 0x00000000
|
||||
wm 32 0x020e04a0 0x00000000
|
||||
wm 32 0x020e0774 0x000C0000
|
||||
wm 32 0x021b081c 0x33333333
|
||||
wm 32 0x021b0820 0x33333333
|
||||
wm 32 0x021b0824 0x33333333
|
||||
wm 32 0x021b0828 0x33333333
|
||||
wm 32 0x021b481c 0x33333333
|
||||
wm 32 0x021b4820 0x33333333
|
||||
wm 32 0x021b4824 0x33333333
|
||||
wm 32 0x021b4828 0x33333333
|
||||
wm 32 0x021b0018 0x00081740
|
||||
wm 32 0x021b001c 0x00008000
|
||||
wm 32 0x021b0004 0x0002002D
|
||||
wm 32 0x021b000c 0x40435323
|
||||
wm 32 0x021b0010 0xB66E8D63
|
||||
wm 32 0x021b0014 0x01FF00DB
|
||||
wm 32 0x021b002c 0x000026D2
|
||||
wm 32 0x021b0030 0x00431023
|
||||
wm 32 0x021b0008 0x00333030
|
||||
wm 32 0x021b0004 0x0002556D
|
||||
wm 32 0x021b0040 0x00000017
|
||||
wm 32 0x021b0000 0x83190000
|
||||
wm 32 0x021b001c 0x04008032
|
||||
wm 32 0x021b001c 0x00008033
|
||||
wm 32 0x021b001c 0x00048031
|
||||
wm 32 0x021b001c 0x13208030
|
||||
wm 32 0x021b001c 0x04008040
|
||||
wm 32 0x021b0800 0xA1390003
|
||||
wm 32 0x021b4800 0xA1390003
|
||||
wm 32 0x021b0020 0x00005800
|
||||
wm 32 0x021b0818 0x00022227
|
||||
wm 32 0x021b4818 0x00022227
|
||||
wm 32 0x021b083c 0x42350231
|
||||
wm 32 0x021b483c 0x42350231
|
||||
wm 32 0x021b0840 0x021A0218
|
||||
wm 32 0x021b4840 0x021A0218
|
||||
wm 32 0x021b0848 0x4B4B4E49
|
||||
wm 32 0x021b4848 0x4B4B4E49
|
||||
wm 32 0x021b0850 0x3F3F3035
|
||||
wm 32 0x021b4850 0x3F3F3035
|
||||
wm 32 0x021b080c 0x0040003C
|
||||
wm 32 0x021b0810 0x0032003E
|
||||
wm 32 0x021b480c 0x0040003C
|
||||
wm 32 0x021b4810 0x0032003E
|
||||
wm 32 0x021b08b8 0x00000800
|
||||
wm 32 0x021b48b8 0x00000800
|
||||
wm 32 0x021b001c 0x00000000
|
||||
wm 32 0x021b0404 0x00011006
|
||||
wm 32 0x020C4068 0x00C03F3F
|
||||
wm 32 0x020C406c 0x0030FC03
|
||||
wm 32 0x020C4070 0x0FFFC000
|
||||
wm 32 0x020C4074 0x3FF00000
|
||||
wm 32 0x020C4078 0x00FFF300
|
||||
wm 32 0x020C407c 0x0F0000C3
|
||||
wm 32 0x020C4080 0x000003FF
|
||||
wm 32 0x020e0010 0xF00000CF
|
||||
wm 32 0x020e0018 0x007F007F
|
||||
wm 32 0x020e001c 0x007F007F
|
|
@ -0,0 +1,104 @@
|
|||
soc imx6
|
||||
loadaddr 0x20000000
|
||||
dcdofs 0x400
|
||||
|
||||
wm 32 0x020e05a8 0x00000030
|
||||
wm 32 0x020e05b0 0x00000030
|
||||
wm 32 0x020e0524 0x00000030
|
||||
wm 32 0x020e051c 0x00000030
|
||||
wm 32 0x020e0518 0x00000030
|
||||
wm 32 0x020e050c 0x00000030
|
||||
wm 32 0x020e05b8 0x00000030
|
||||
wm 32 0x020e05c0 0x00000030
|
||||
wm 32 0x020e05ac 0x00020030
|
||||
wm 32 0x020e05b4 0x00020030
|
||||
wm 32 0x020e0528 0x00020030
|
||||
wm 32 0x020e0520 0x00020030
|
||||
wm 32 0x020e0514 0x00020030
|
||||
wm 32 0x020e0510 0x00020030
|
||||
wm 32 0x020e05bc 0x00020030
|
||||
wm 32 0x020e05c4 0x00020030
|
||||
wm 32 0x020e056c 0x00020030
|
||||
wm 32 0x020e0578 0x00020030
|
||||
wm 32 0x020e0588 0x00020030
|
||||
wm 32 0x020e0594 0x00020030
|
||||
wm 32 0x020e057c 0x00020030
|
||||
wm 32 0x020e0590 0x00003000
|
||||
wm 32 0x020e0598 0x00003000
|
||||
wm 32 0x020e058c 0x00000000
|
||||
wm 32 0x020e059c 0x00003030
|
||||
wm 32 0x020e05a0 0x00003030
|
||||
wm 32 0x020e0784 0x00000030
|
||||
wm 32 0x020e0788 0x00000030
|
||||
wm 32 0x020e0794 0x00000030
|
||||
wm 32 0x020e079c 0x00000030
|
||||
wm 32 0x020e07a0 0x00000030
|
||||
wm 32 0x020e07a4 0x00000030
|
||||
wm 32 0x020e07a8 0x00000030
|
||||
wm 32 0x020e0748 0x00000030
|
||||
wm 32 0x020e074c 0x00000030
|
||||
wm 32 0x020e0750 0x00020000
|
||||
wm 32 0x020e0758 0x00000000
|
||||
wm 32 0x020e0774 0x00020000
|
||||
wm 32 0x020e078c 0x00000030
|
||||
wm 32 0x020e0798 0x000c0000
|
||||
wm 32 0x021b081c 0x33333333
|
||||
wm 32 0x021b0820 0x33333333
|
||||
wm 32 0x021b0824 0x33333333
|
||||
wm 32 0x021b0828 0x33333333
|
||||
wm 32 0x021b481c 0x33333333
|
||||
wm 32 0x021b4820 0x33333333
|
||||
wm 32 0x021b4824 0x33333333
|
||||
wm 32 0x021b4828 0x33333333
|
||||
wm 32 0x021b0018 0x00081740
|
||||
wm 32 0x021b001c 0x00008000
|
||||
wm 32 0x021b000c 0x555a7974
|
||||
wm 32 0x021b0010 0xdb538f64
|
||||
wm 32 0x021b0014 0x01ff00db
|
||||
wm 32 0x021b002c 0x000026d2
|
||||
wm 32 0x021b0030 0x005a1023
|
||||
wm 32 0x021b0008 0x09444040
|
||||
wm 32 0x021b0004 0x00025576
|
||||
wm 32 0x021b0040 0x00000027
|
||||
wm 32 0x021b0000 0x831a0000
|
||||
wm 32 0x021b001c 0x04088032
|
||||
wm 32 0x021b001c 0x0408803a
|
||||
wm 32 0x021b001c 0x00008033
|
||||
wm 32 0x021b001c 0x0000803b
|
||||
wm 32 0x021b001c 0x00428031
|
||||
wm 32 0x021b001c 0x00428039
|
||||
wm 32 0x021b001c 0x19308030
|
||||
wm 32 0x021b001c 0x19308038
|
||||
wm 32 0x021b001c 0x04008040
|
||||
wm 32 0x021b001c 0x04008048
|
||||
wm 32 0x021b0800 0xa1380003
|
||||
wm 32 0x021b4800 0xa1380003
|
||||
wm 32 0x021b0020 0x00005800
|
||||
wm 32 0x021b0818 0x00022227
|
||||
wm 32 0x021b4818 0x00022227
|
||||
wm 32 0x021b083c 0x434b0350
|
||||
wm 32 0x021b0840 0x034c0359
|
||||
wm 32 0x021b483c 0x434b0350
|
||||
wm 32 0x021b4840 0x03650348
|
||||
wm 32 0x021b0848 0x4436383b
|
||||
wm 32 0x021b4848 0x39393341
|
||||
wm 32 0x021b0850 0x35373933
|
||||
wm 32 0x021b4850 0x48254a36
|
||||
wm 32 0x021b080c 0x001f001f
|
||||
wm 32 0x021b0810 0x001f001f
|
||||
wm 32 0x021b480c 0x00440044
|
||||
wm 32 0x021b4810 0x00440044
|
||||
wm 32 0x021b08b8 0x00000800
|
||||
wm 32 0x021b48b8 0x00000800
|
||||
wm 32 0x021b001c 0x00000000
|
||||
wm 32 0x021b0404 0x00011006
|
||||
wm 32 0x020c4068 0x00c03f3f
|
||||
wm 32 0x020c406c 0x0030fc03
|
||||
wm 32 0x020c4070 0x0fffc000
|
||||
wm 32 0x020c4074 0x3ff00000
|
||||
wm 32 0x020c4078 0x00fff300
|
||||
wm 32 0x020c407c 0x0f0000c3
|
||||
wm 32 0x020c4080 0x000003ff
|
||||
wm 32 0x020e0010 0xf00000cf
|
||||
wm 32 0x020e0018 0x007f007f
|
||||
wm 32 0x020e001c 0x007f007f
|
|
@ -0,0 +1,88 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Sascha Hauer <s.hauer@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.
|
||||
*
|
||||
*/
|
||||
#include <debug_ll.h>
|
||||
#include <common.h>
|
||||
#include <sizes.h>
|
||||
#include <io.h>
|
||||
#include <asm/barebox-arm-head.h>
|
||||
#include <asm/barebox-arm.h>
|
||||
#include <asm/sections.h>
|
||||
#include <asm/cache.h>
|
||||
#include <asm/mmu.h>
|
||||
#include <mach/imx6-mmdc.h>
|
||||
#include <mach/imx6.h>
|
||||
|
||||
static inline void setup_uart(void)
|
||||
{
|
||||
/* Enable UART for lowlevel debugging purposes */
|
||||
writel(0x00000000, 0x021e8080);
|
||||
writel(0x00004027, 0x021e8084);
|
||||
writel(0x00000704, 0x021e8088);
|
||||
writel(0x00000a81, 0x021e8090);
|
||||
writel(0x0000002b, 0x021e809c);
|
||||
writel(0x00013880, 0x021e80b0);
|
||||
writel(0x0000047f, 0x021e80a4);
|
||||
writel(0x0000c34f, 0x021e80a8);
|
||||
writel(0x00000001, 0x021e8080);
|
||||
}
|
||||
|
||||
extern char __dtb_imx6q_mba6x_start[];
|
||||
extern char __dtb_imx6dl_mba6x_start[];
|
||||
|
||||
ENTRY_FUNCTION(start_imx6q_mba6x)(void)
|
||||
{
|
||||
uint32_t fdt;
|
||||
|
||||
__barebox_arm_head();
|
||||
|
||||
arm_cpu_lowlevel_init();
|
||||
|
||||
arm_setup_stack(0x00920000 - 8);
|
||||
|
||||
if (IS_ENABLED(CONFIG_DEBUG_LL)) {
|
||||
writel(0x2, 0x020e0338);
|
||||
setup_uart();
|
||||
PUTC_LL('a');
|
||||
}
|
||||
|
||||
arm_early_mmu_cache_invalidate();
|
||||
|
||||
fdt = (uint32_t)__dtb_imx6q_mba6x_start - get_runtime_offset();
|
||||
|
||||
barebox_arm_entry(0x10000000, SZ_1G, fdt);
|
||||
}
|
||||
|
||||
ENTRY_FUNCTION(start_imx6dl_mba6x)(void)
|
||||
{
|
||||
uint32_t fdt;
|
||||
|
||||
__barebox_arm_head();
|
||||
|
||||
arm_cpu_lowlevel_init();
|
||||
|
||||
arm_setup_stack(0x00920000 - 8);
|
||||
|
||||
if (IS_ENABLED(CONFIG_DEBUG_LL)) {
|
||||
writel(0x2, 0x020e035c);
|
||||
setup_uart();
|
||||
PUTC_LL('a');
|
||||
}
|
||||
|
||||
arm_early_mmu_cache_invalidate();
|
||||
|
||||
fdt = (uint32_t)__dtb_imx6dl_mba6x_start - get_runtime_offset();
|
||||
|
||||
barebox_arm_entry(0x10000000, SZ_512M, fdt);
|
||||
}
|
|
@ -3,7 +3,10 @@ CONFIG_IMX_MULTI_BOARDS=y
|
|||
CONFIG_MACH_EFIKA_MX_SMARTBOOK=y
|
||||
CONFIG_MACH_FREESCALE_MX51_PDK=y
|
||||
CONFIG_MACH_FREESCALE_MX53_LOCO=y
|
||||
CONFIG_MACH_PHYTEC_PFLA02=y
|
||||
CONFIG_MACH_REALQ7=y
|
||||
CONFIG_MACH_GK802=y
|
||||
CONFIG_MACH_TQMA6X=y
|
||||
CONFIG_IMX_IIM=y
|
||||
CONFIG_IMX_IIM_FUSE_BLOW=y
|
||||
CONFIG_THUMB2_BAREBOX=y
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
dtb-$(CONFIG_ARCH_IMX51) += imx51-babbage.dtb \
|
||||
imx51-genesi-efika-sb.dtb
|
||||
dtb-$(CONFIG_ARCH_IMX53) += imx53-qsb.dtb
|
||||
dtb-$(CONFIG_ARCH_IMX6) += imx6q-dmo-realq7.dtb \
|
||||
dtb-$(CONFIG_ARCH_IMX6) += imx6q-gk802.dtb \
|
||||
imx6q-dmo-realq7.dtb \
|
||||
imx6q-sabrelite.dtb \
|
||||
imx6q-sabresd.dtb
|
||||
imx6q-sabresd.dtb \
|
||||
imx6dl-mba6x.dtb \
|
||||
imx6q-mba6x.dtb \
|
||||
imx6q-phytec-pbab01.dtb
|
||||
|
||||
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_NAME))
|
||||
obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o
|
||||
|
@ -11,7 +15,10 @@ obj-$(CONFIG_BUILTIN_DTB) += $(BUILTIN_DTB).dtb.o
|
|||
pbl-$(CONFIG_MACH_EFIKA_MX_SMARTBOOK) += imx51-genesi-efika-sb.dtb.o
|
||||
pbl-$(CONFIG_MACH_FREESCALE_MX51_PDK) += imx51-babbage.dtb.o
|
||||
pbl-$(CONFIG_MACH_FREESCALE_MX53_LOCO) += imx53-qsb.dtb.o
|
||||
pbl-$(CONFIG_MACH_PHYTEC_PFLA02) += imx6q-phytec-pbab01.dtb.o
|
||||
pbl-$(CONFIG_MACH_REALQ7) += imx6q-dmo-realq7.dtb.o
|
||||
pbl-$(CONFIG_MACH_GK802) += imx6q-gk802.dtb.o
|
||||
pbl-$(CONFIG_MACH_TQMA6X) += imx6dl-mba6x.dtb.o imx6q-mba6x.dtb.o
|
||||
|
||||
.SECONDARY: $(obj)/$(BUILTIN_DTB).dtb.S
|
||||
.SECONDARY: $(patsubst %,$(obj)/%.S,$(dtb-y))
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx6dl-tqma6s.dtsi"
|
||||
#include "imx6qdl-mba6x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TQ TQMA6S on MBa6x";
|
||||
compatible = "tq,mba6x", "tq,tqma6s", "fsl,imx6dl";
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = &uart2;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x10000000 0x20000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
gpiobuttons {
|
||||
pinctrl_gpiobuttons_1: gpiogrp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_GPIO_17__GPIO7_IO12 0x80000000
|
||||
MX6DL_PAD_GPIO_18__GPIO7_IO13 0x80000000
|
||||
MX6DL_PAD_GPIO_8__GPIO1_IO08 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
hog {
|
||||
pinctrl_hog: hoggrp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_ENET_CRS_DV__GPIO1_IO25 0x80000000 /* FEC phy reset */
|
||||
MX6DL_PAD_GPIO_4__GPIO1_IO04 0x80000000 /* usdhc2 CD */
|
||||
MX6DL_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* usdhc2 WP */
|
||||
MX6DL_PAD_EIM_D19__GPIO3_IO19 0x80000000 /* eCSPI1 SS1 */
|
||||
MX6DL_PAD_NANDF_RB0__GPIO6_IO10 0x80000000 /* PMIC irq */
|
||||
MX6DL_PAD_EIM_D22__GPIO3_IO22 0x80000000
|
||||
MX6DL_PAD_SD1_DAT3__PWM1_OUT 0x80000000
|
||||
MX6DL_PAD_SD1_DAT3__GPIO1_IO21 0x80000000 /* beeper (1 = on) */
|
||||
MX6DL_PAD_GPIO_16__GPIO7_IO11 0x80000000 /* LCD.PWR_EN */
|
||||
MX6DL_PAD_GPIO_7__GPIO1_IO07 0x80000000 /* LCD.RESET */
|
||||
MX6DL_PAD_GPIO_19__GPIO4_IO05 0x80000000 /* LCD.BLT_EN */
|
||||
MX6DL_PAD_DI0_PIN4__GPIO4_IO20 0x80000000 /* LCD.CONTRAST */
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&disp0 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_disp0_ipu1>;
|
||||
crtcs = <&ipu1 0>;
|
||||
};
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
#include "imx6dl.dtsi"
|
||||
#include "imx6qdl-tqma6x.dtsi"
|
||||
|
||||
&iomuxc {
|
||||
can1 {
|
||||
pinctrl_can1_1: can1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_KEY_COL2__FLEXCAN1_TX 0x80000000
|
||||
MX6DL_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
can2 {
|
||||
pinctrl_can2_1: can2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_KEY_COL4__FLEXCAN2_TX 0x80000000
|
||||
MX6DL_PAD_KEY_ROW4__FLEXCAN2_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
disp0 {
|
||||
pinctrl_disp0_ipu1: disp0grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x80000000
|
||||
MX6DL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x80000000
|
||||
MX6DL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x80000000
|
||||
MX6DL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x80000000
|
||||
MX6DL_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x80000000
|
||||
MX6DL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3 {
|
||||
pinctrl_i2c3_2: i2c3grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
|
||||
MX6DL_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart2 {
|
||||
pinctrl_uart2_2: uart2grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
|
||||
MX6DL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc2 {
|
||||
pinctrl_usdhc2_tqma6x: usdhc2grp-tqma6x {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD2_CMD__SD2_CMD 0x000070f0
|
||||
MX6DL_PAD_SD2_CLK__SD2_CLK 0x000070f0
|
||||
MX6DL_PAD_SD2_DAT0__SD2_DATA0 0x000070f0
|
||||
MX6DL_PAD_SD2_DAT1__SD2_DATA1 0x000070f0
|
||||
MX6DL_PAD_SD2_DAT2__SD2_DATA2 0x000070f0
|
||||
MX6DL_PAD_SD2_DAT3__SD2_DATA3 0x000070f0
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,438 @@
|
|||
|
||||
/*
|
||||
* Copyright 2013 Freescale Semiconductor, Inc.
|
||||
*
|
||||
* 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 "imx6qdl.dtsi"
|
||||
#include "imx6dl-pinfunc.h"
|
||||
|
||||
/ {
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
cpu@0 {
|
||||
compatible = "arm,cortex-a9";
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
next-level-cache = <&L2>;
|
||||
};
|
||||
|
||||
cpu@1 {
|
||||
compatible = "arm,cortex-a9";
|
||||
device_type = "cpu";
|
||||
reg = <1>;
|
||||
next-level-cache = <&L2>;
|
||||
};
|
||||
};
|
||||
|
||||
soc {
|
||||
aips1: aips-bus@02000000 {
|
||||
iomuxc: iomuxc@020e0000 {
|
||||
compatible = "fsl,imx6dl-iomuxc";
|
||||
reg = <0x020e0000 0x4000>;
|
||||
|
||||
audmux {
|
||||
pinctrl_audmux_1: audmux-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD2_DAT0__AUD4_RXD 0x80000000
|
||||
MX6DL_PAD_SD2_DAT3__AUD4_TXC 0x80000000
|
||||
MX6DL_PAD_SD2_DAT2__AUD4_TXD 0x80000000
|
||||
MX6DL_PAD_SD2_DAT1__AUD4_TXFS 0x80000000
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_audmux_2: audmux-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_CSI0_DAT7__AUD3_RXD 0x80000000
|
||||
MX6DL_PAD_CSI0_DAT4__AUD3_TXC 0x80000000
|
||||
MX6DL_PAD_CSI0_DAT5__AUD3_TXD 0x80000000
|
||||
MX6DL_PAD_CSI0_DAT6__AUD3_TXFS 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ecspi1 {
|
||||
pinctrl_ecspi1_1: ecspi1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
|
||||
MX6DL_PAD_EIM_D18__ECSPI1_MOSI 0x100b1
|
||||
MX6DL_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ecspi1_2: ecspi1grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
|
||||
MX6DL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
|
||||
MX6DL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ecspi3 {
|
||||
pinctrl_ecspi3_1: ecspi3grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_DISP0_DAT2__ECSPI3_MISO 0x100b1
|
||||
MX6DL_PAD_DISP0_DAT1__ECSPI3_MOSI 0x100b1
|
||||
MX6DL_PAD_DISP0_DAT0__ECSPI3_SCLK 0x100b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
enet {
|
||||
pinctrl_enet_1: enetgrp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
MX6DL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
|
||||
MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
MX6DL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_enet_2: enetgrp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_KEY_COL1__ENET_MDIO 0x1b0b0
|
||||
MX6DL_PAD_KEY_COL2__ENET_MDC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
|
||||
MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_enet_3: enetgrp-3 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
MX6DL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
|
||||
MX6DL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
|
||||
MX6DL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
MX6DL_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
gpmi-nand {
|
||||
pinctrl_gpmi_nand_1: gpmi-nand-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_NANDF_CLE__NAND_CLE 0xb0b1
|
||||
MX6DL_PAD_NANDF_ALE__NAND_ALE 0xb0b1
|
||||
MX6DL_PAD_NANDF_WP_B__NAND_WP_B 0xb0b1
|
||||
MX6DL_PAD_NANDF_RB0__NAND_READY_B 0xb000
|
||||
MX6DL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1
|
||||
MX6DL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1
|
||||
MX6DL_PAD_SD4_CMD__NAND_RE_B 0xb0b1
|
||||
MX6DL_PAD_SD4_CLK__NAND_WE_B 0xb0b1
|
||||
MX6DL_PAD_NANDF_D0__NAND_DATA00 0xb0b1
|
||||
MX6DL_PAD_NANDF_D1__NAND_DATA01 0xb0b1
|
||||
MX6DL_PAD_NANDF_D2__NAND_DATA02 0xb0b1
|
||||
MX6DL_PAD_NANDF_D3__NAND_DATA03 0xb0b1
|
||||
MX6DL_PAD_NANDF_D4__NAND_DATA04 0xb0b1
|
||||
MX6DL_PAD_NANDF_D5__NAND_DATA05 0xb0b1
|
||||
MX6DL_PAD_NANDF_D6__NAND_DATA06 0xb0b1
|
||||
MX6DL_PAD_NANDF_D7__NAND_DATA07 0xb0b1
|
||||
MX6DL_PAD_SD4_DAT0__NAND_DQS 0x00b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c1 {
|
||||
pinctrl_i2c1_1: i2c1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
|
||||
MX6DL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1_2: i2c1grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
|
||||
MX6DL_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c2 {
|
||||
pinctrl_i2c2_1: i2c2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_EB2__I2C2_SCL 0x4001b8b1
|
||||
MX6DL_PAD_EIM_D16__I2C2_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3 {
|
||||
pinctrl_i2c3_1: i2c3grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
|
||||
MX6DL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart1 {
|
||||
pinctrl_uart1_1: uart1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0b1
|
||||
MX6DL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart2 {
|
||||
pinctrl_uart2_1: uart2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
|
||||
MX6DL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart4 {
|
||||
pinctrl_uart4_1: uart4grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_KEY_COL0__UART4_TX_DATA 0x1b0b1
|
||||
MX6DL_PAD_KEY_ROW0__UART4_RX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usbotg {
|
||||
pinctrl_usbotg_1: usbotggrp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_GPIO_1__USB_OTG_ID 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usbotg_2: usbotggrp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc2 {
|
||||
pinctrl_usdhc2_1: usdhc2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD2_CMD__SD2_CMD 0x17059
|
||||
MX6DL_PAD_SD2_CLK__SD2_CLK 0x10059
|
||||
MX6DL_PAD_SD2_DAT0__SD2_DATA0 0x17059
|
||||
MX6DL_PAD_SD2_DAT1__SD2_DATA1 0x17059
|
||||
MX6DL_PAD_SD2_DAT2__SD2_DATA2 0x17059
|
||||
MX6DL_PAD_SD2_DAT3__SD2_DATA3 0x17059
|
||||
MX6DL_PAD_NANDF_D4__SD2_DATA4 0x17059
|
||||
MX6DL_PAD_NANDF_D5__SD2_DATA5 0x17059
|
||||
MX6DL_PAD_NANDF_D6__SD2_DATA6 0x17059
|
||||
MX6DL_PAD_NANDF_D7__SD2_DATA7 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_2: usdhc2grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD2_CMD__SD2_CMD 0x17059
|
||||
MX6DL_PAD_SD2_CLK__SD2_CLK 0x10059
|
||||
MX6DL_PAD_SD2_DAT0__SD2_DATA0 0x17059
|
||||
MX6DL_PAD_SD2_DAT1__SD2_DATA1 0x17059
|
||||
MX6DL_PAD_SD2_DAT2__SD2_DATA2 0x17059
|
||||
MX6DL_PAD_SD2_DAT3__SD2_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc3 {
|
||||
pinctrl_usdhc3_1: usdhc3grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||
MX6DL_PAD_SD3_CLK__SD3_CLK 0x10059
|
||||
MX6DL_PAD_SD3_DAT0__SD3_DATA0 0x17059
|
||||
MX6DL_PAD_SD3_DAT1__SD3_DATA1 0x17059
|
||||
MX6DL_PAD_SD3_DAT2__SD3_DATA2 0x17059
|
||||
MX6DL_PAD_SD3_DAT3__SD3_DATA3 0x17059
|
||||
MX6DL_PAD_SD3_DAT4__SD3_DATA4 0x17059
|
||||
MX6DL_PAD_SD3_DAT5__SD3_DATA5 0x17059
|
||||
MX6DL_PAD_SD3_DAT6__SD3_DATA6 0x17059
|
||||
MX6DL_PAD_SD3_DAT7__SD3_DATA7 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc3_2: usdhc3grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD3_CMD__SD3_CMD 0x17059
|
||||
MX6DL_PAD_SD3_CLK__SD3_CLK 0x10059
|
||||
MX6DL_PAD_SD3_DAT0__SD3_DATA0 0x17059
|
||||
MX6DL_PAD_SD3_DAT1__SD3_DATA1 0x17059
|
||||
MX6DL_PAD_SD3_DAT2__SD3_DATA2 0x17059
|
||||
MX6DL_PAD_SD3_DAT3__SD3_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc4 {
|
||||
pinctrl_usdhc4_1: usdhc4grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD4_CMD__SD4_CMD 0x17059
|
||||
MX6DL_PAD_SD4_CLK__SD4_CLK 0x10059
|
||||
MX6DL_PAD_SD4_DAT0__SD4_DATA0 0x17059
|
||||
MX6DL_PAD_SD4_DAT1__SD4_DATA1 0x17059
|
||||
MX6DL_PAD_SD4_DAT2__SD4_DATA2 0x17059
|
||||
MX6DL_PAD_SD4_DAT3__SD4_DATA3 0x17059
|
||||
MX6DL_PAD_SD4_DAT4__SD4_DATA4 0x17059
|
||||
MX6DL_PAD_SD4_DAT5__SD4_DATA5 0x17059
|
||||
MX6DL_PAD_SD4_DAT6__SD4_DATA6 0x17059
|
||||
MX6DL_PAD_SD4_DAT7__SD4_DATA7 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc4_2: usdhc4grp-2 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_SD4_CMD__SD4_CMD 0x17059
|
||||
MX6DL_PAD_SD4_CLK__SD4_CLK 0x10059
|
||||
MX6DL_PAD_SD4_DAT0__SD4_DATA0 0x17059
|
||||
MX6DL_PAD_SD4_DAT1__SD4_DATA1 0x17059
|
||||
MX6DL_PAD_SD4_DAT2__SD4_DATA2 0x17059
|
||||
MX6DL_PAD_SD4_DAT3__SD4_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
weim {
|
||||
pinctrl_weim_cs0_1: weim_cs0grp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_CS0__EIM_CS0_B 0xb0b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_weim_nor_1: weim_norgrp-1 {
|
||||
fsl,pins = <
|
||||
MX6DL_PAD_EIM_OE__EIM_OE_B 0xb0b1
|
||||
MX6DL_PAD_EIM_RW__EIM_RW 0xb0b1
|
||||
MX6DL_PAD_EIM_WAIT__EIM_WAIT_B 0xb060
|
||||
/* data */
|
||||
MX6DL_PAD_EIM_D16__EIM_DATA16 0x1b0b0
|
||||
MX6DL_PAD_EIM_D17__EIM_DATA17 0x1b0b0
|
||||
MX6DL_PAD_EIM_D18__EIM_DATA18 0x1b0b0
|
||||
MX6DL_PAD_EIM_D19__EIM_DATA19 0x1b0b0
|
||||
MX6DL_PAD_EIM_D20__EIM_DATA20 0x1b0b0
|
||||
MX6DL_PAD_EIM_D21__EIM_DATA21 0x1b0b0
|
||||
MX6DL_PAD_EIM_D22__EIM_DATA22 0x1b0b0
|
||||
MX6DL_PAD_EIM_D23__EIM_DATA23 0x1b0b0
|
||||
MX6DL_PAD_EIM_D24__EIM_DATA24 0x1b0b0
|
||||
MX6DL_PAD_EIM_D25__EIM_DATA25 0x1b0b0
|
||||
MX6DL_PAD_EIM_D26__EIM_DATA26 0x1b0b0
|
||||
MX6DL_PAD_EIM_D27__EIM_DATA27 0x1b0b0
|
||||
MX6DL_PAD_EIM_D28__EIM_DATA28 0x1b0b0
|
||||
MX6DL_PAD_EIM_D29__EIM_DATA29 0x1b0b0
|
||||
MX6DL_PAD_EIM_D30__EIM_DATA30 0x1b0b0
|
||||
MX6DL_PAD_EIM_D31__EIM_DATA31 0x1b0b0
|
||||
/* address */
|
||||
MX6DL_PAD_EIM_A23__EIM_ADDR23 0xb0b1
|
||||
MX6DL_PAD_EIM_A22__EIM_ADDR22 0xb0b1
|
||||
MX6DL_PAD_EIM_A21__EIM_ADDR21 0xb0b1
|
||||
MX6DL_PAD_EIM_A20__EIM_ADDR20 0xb0b1
|
||||
MX6DL_PAD_EIM_A19__EIM_ADDR19 0xb0b1
|
||||
MX6DL_PAD_EIM_A18__EIM_ADDR18 0xb0b1
|
||||
MX6DL_PAD_EIM_A17__EIM_ADDR17 0xb0b1
|
||||
MX6DL_PAD_EIM_A16__EIM_ADDR16 0xb0b1
|
||||
MX6DL_PAD_EIM_DA15__EIM_AD15 0xb0b1
|
||||
MX6DL_PAD_EIM_DA14__EIM_AD14 0xb0b1
|
||||
MX6DL_PAD_EIM_DA13__EIM_AD13 0xb0b1
|
||||
MX6DL_PAD_EIM_DA12__EIM_AD12 0xb0b1
|
||||
MX6DL_PAD_EIM_DA11__EIM_AD11 0xb0b1
|
||||
MX6DL_PAD_EIM_DA10__EIM_AD10 0xb0b1
|
||||
MX6DL_PAD_EIM_DA9__EIM_AD09 0xb0b1
|
||||
MX6DL_PAD_EIM_DA8__EIM_AD08 0xb0b1
|
||||
MX6DL_PAD_EIM_DA7__EIM_AD07 0xb0b1
|
||||
MX6DL_PAD_EIM_DA6__EIM_AD06 0xb0b1
|
||||
MX6DL_PAD_EIM_DA5__EIM_AD05 0xb0b1
|
||||
MX6DL_PAD_EIM_DA4__EIM_AD04 0xb0b1
|
||||
MX6DL_PAD_EIM_DA3__EIM_AD03 0xb0b1
|
||||
MX6DL_PAD_EIM_DA2__EIM_AD02 0xb0b1
|
||||
MX6DL_PAD_EIM_DA1__EIM_AD01 0xb0b1
|
||||
MX6DL_PAD_EIM_DA0__EIM_AD00 0xb0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pxp: pxp@020f0000 {
|
||||
reg = <0x020f0000 0x4000>;
|
||||
interrupts = <0 98 0x04>;
|
||||
};
|
||||
|
||||
epdc: epdc@020f4000 {
|
||||
reg = <0x020f4000 0x4000>;
|
||||
interrupts = <0 97 0x04>;
|
||||
};
|
||||
|
||||
lcdif: lcdif@020f8000 {
|
||||
reg = <0x020f8000 0x4000>;
|
||||
interrupts = <0 39 0x04>;
|
||||
};
|
||||
};
|
||||
|
||||
aips2: aips-bus@02100000 {
|
||||
i2c4: i2c@021f8000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,imx1-i2c";
|
||||
reg = <0x021f8000 0x4000>;
|
||||
interrupts = <0 35 0x04>;
|
||||
status = "disabled";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&ldb {
|
||||
clocks = <&clks 33>, <&clks 34>,
|
||||
<&clks 39>, <&clks 40>,
|
||||
<&clks 135>, <&clks 136>;
|
||||
clock-names = "di0_pll", "di1_pll",
|
||||
"di0_sel", "di1_sel",
|
||||
"di0", "di1";
|
||||
|
||||
lvds-channel@0 {
|
||||
crtcs = <&ipu1 0>, <&ipu1 1>;
|
||||
};
|
||||
|
||||
lvds-channel@1 {
|
||||
crtcs = <&ipu1 0>, <&ipu1 1>;
|
||||
};
|
||||
};
|
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* Copyright (C) 2013 Philipp Zabel
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "imx6q.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Zealz GK802";
|
||||
compatible = "zealz,imx6q-gk802", "fsl,imx6q";
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = "/soc/aips-bus@02100000/serial@021f0000";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
|
||||
regulators {
|
||||
compatible = "simple-bus";
|
||||
|
||||
reg_3p3v: 3p3v {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "3P3V";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
recovery-button {
|
||||
label = "recovery";
|
||||
gpios = <&gpio3 16 1>;
|
||||
linux,code = <0x198>; /* KEY_RESTART */
|
||||
gpio-key,wakeup;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* Internal I2C */
|
||||
&i2c2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c2_gk802>;
|
||||
clock-frequency = <100000>;
|
||||
status = "okay";
|
||||
|
||||
/* SDMC DM2016 1024 bit EEPROM + 128 bit OTP */
|
||||
eeprom: dm2016@51 {
|
||||
compatible = "sdmc,dm2016";
|
||||
reg = <0x51>;
|
||||
};
|
||||
};
|
||||
|
||||
/* External I2C via HDMI */
|
||||
&i2c3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3_gk802>;
|
||||
clock-frequency = <100000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
hog {
|
||||
pinctrl_hog: hoggrp {
|
||||
fsl,pins = <
|
||||
/* Recovery button, active-low */
|
||||
MX6Q_PAD_EIM_D16__GPIO3_IO16 0x100b1
|
||||
/* RTL8192CU enable GPIO, active-low */
|
||||
MX6Q_PAD_NANDF_D0__GPIO2_IO00 0x1b0b0
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c2 {
|
||||
pinctrl_i2c2_gk802: i2c2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
|
||||
MX6Q_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3 {
|
||||
pinctrl_i2c3_gk802: i2c3grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
|
||||
MX6Q_PAD_GPIO_16__I2C3_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart4_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* External USB-A port (USBOTG) */
|
||||
&usbotg {
|
||||
phy-mode = "utmi";
|
||||
dr_mode = "host";
|
||||
barebox,phy_type = "utmi";
|
||||
disable-over-current;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* Internal USB port (USBH1), connected to RTL8192CU */
|
||||
&usbh1 {
|
||||
phy-mode = "utmi";
|
||||
dr_mode = "host";
|
||||
barebox,phy_type = "utmi";
|
||||
disable-over-current;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* External microSD */
|
||||
&usdhc3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc3_2>;
|
||||
bus-width = <4>;
|
||||
cd-gpios = <&gpio6 11 0>;
|
||||
vmmc-supply = <®_3p3v>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* Internal microSD */
|
||||
&usdhc4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc4_2>;
|
||||
bus-width = <4>;
|
||||
vmmc-supply = <®_3p3v>;
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,71 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx6q-tqma6q.dtsi"
|
||||
#include "imx6qdl-mba6x.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TQ TQMA6Q on MBa6x";
|
||||
compatible = "tq,mba6x", "tq,tqma6q", "fsl,imx6q";
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = &uart2;
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
gpiobuttons {
|
||||
pinctrl_gpiobuttons_1: gpiogrp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_GPIO_17__GPIO7_IO12 0x80000000
|
||||
MX6Q_PAD_GPIO_18__GPIO7_IO13 0x80000000
|
||||
MX6Q_PAD_GPIO_8__GPIO1_IO08 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
hog {
|
||||
pinctrl_hog: hoggrp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_ENET_CRS_DV__GPIO1_IO25 0x80000000 /* FEC phy reset */
|
||||
MX6Q_PAD_GPIO_4__GPIO1_IO04 0x80000000 /* usdhc2 CD */
|
||||
MX6Q_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* usdhc2 WP */
|
||||
MX6Q_PAD_EIM_D19__GPIO3_IO19 0x80000000 /* eCSPI1 SS1 */
|
||||
MX6Q_PAD_NANDF_RB0__GPIO6_IO10 0x80000000 /* PMIC irq */
|
||||
MX6Q_PAD_EIM_D22__GPIO3_IO22 0x80000000
|
||||
MX6Q_PAD_SD1_DAT3__GPIO1_IO21 0x80000000 /* beeper (1 = on) */
|
||||
MX6Q_PAD_GPIO_16__GPIO7_IO11 0x80000000 /* LCD.PWR_EN */
|
||||
MX6Q_PAD_GPIO_7__GPIO1_IO07 0x80000000 /* LCD.RESET */
|
||||
MX6Q_PAD_GPIO_19__GPIO4_IO05 0x80000000 /* LCD.BLT_EN */
|
||||
MX6Q_PAD_DI0_PIN4__GPIO4_IO20 0x80000000 /* LCD.CONTRAST */
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&disp0 {
|
||||
pinctrl-names = "ipu1-di0", "ipu2-di0";
|
||||
pinctrl-0 = <&pinctrl_disp0_ipu1>;
|
||||
pinctrl-1 = <&pinctrl_disp0_ipu2>;
|
||||
crtcs = <&ipu1 0 &ipu2 0>;
|
||||
};
|
||||
|
||||
&sata {
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,47 @@
|
|||
/*
|
||||
* Copyright 2013 Christian Hemp, Phytec Messtechnik GmbH
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include "imx6q-phytec-pfla02.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Phytec phyFLEX-i.MX6 Quad Carrier-Board";
|
||||
compatible = "phytec,imx6q-pbab01", "phytec,imx6q-pfla02", "fsl,imx6q";
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = &uart4;
|
||||
|
||||
environment@0 {
|
||||
compatible = "barebox,environment";
|
||||
device-path = &flash, "partname:barebox-environment";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&fec {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc3 {
|
||||
status = "okay";
|
||||
};
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* Copyright 2013 Christian Hemp, Phytec Messtechnik GmbH
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
#include "imx6q.dtsi"
|
||||
|
||||
/ {
|
||||
model = "Phytec phyFLEX-i.MX6 Ouad";
|
||||
compatible = "phytec,imx6q-pfla02", "fsl,imx6q";
|
||||
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
};
|
||||
|
||||
&ecspi3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi3_1>;
|
||||
status = "okay";
|
||||
fsl,spi-num-chipselects = <1>;
|
||||
cs-gpios = <&gpio4 24 0>;
|
||||
|
||||
flash: m25p80@0 {
|
||||
compatible = "m25p80";
|
||||
spi-max-frequency = <20000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
hog {
|
||||
pinctrl_hog: hoggrp {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_EIM_D23__GPIO3_IO23 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT3__GPIO4_IO24 0x80000000 /* SPI NOR chipselect */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
pfla02 {
|
||||
pinctrl_usdhc3_pfla02: usdhc3grp-pfla02 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_ENET_RXD0__GPIO1_IO27 0x80000000
|
||||
MX6Q_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&fec {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet_3>;
|
||||
phy-mode = "rgmii";
|
||||
phy-reset-gpios = <&gpio3 23 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&flash {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "barebox";
|
||||
reg = <0x0 0x80000>;
|
||||
};
|
||||
|
||||
partition@1 {
|
||||
label = "barebox-environment";
|
||||
reg = <0x80000 0x10000>;
|
||||
};
|
||||
};
|
||||
|
||||
&gpmi {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpmi_nand_1>;
|
||||
nand-on-flash-bbt;
|
||||
status = "okay";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "barebox";
|
||||
reg = <0x0 0x200000>;
|
||||
};
|
||||
|
||||
partition@1 {
|
||||
label = "ubi";
|
||||
reg = <0x200000 0x3fe00000>;
|
||||
};
|
||||
};
|
||||
|
||||
&ocotp1 {
|
||||
barebox,provide-mac-address = <&fec 0x620>;
|
||||
};
|
||||
|
||||
&uart4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart4_1>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usdhc2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2_2>;
|
||||
cd-gpios = <&gpio1 4 0>;
|
||||
wp-gpios = <&gpio1 2 0>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usdhc3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc3_2
|
||||
&pinctrl_usdhc3_pfla02>;
|
||||
cd-gpios = <&gpio1 27 0>;
|
||||
wp-gpios = <&gpio1 29 0>;
|
||||
status = "disabled";
|
||||
};
|
|
@ -108,6 +108,10 @@
|
|||
};
|
||||
};
|
||||
|
||||
&ocotp1 {
|
||||
barebox,provide-mac-address = <&fec 0x620>;
|
||||
};
|
||||
|
||||
&usbotg {
|
||||
vbus-supply = <®_usb_otg_vbus>;
|
||||
pinctrl-names = "default";
|
||||
|
|
|
@ -0,0 +1,132 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
#include "imx6q.dtsi"
|
||||
#include "imx6qdl-tqma6x.dtsi"
|
||||
|
||||
&iomuxc {
|
||||
can1 {
|
||||
pinctrl_can1_1: can1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL2__FLEXCAN1_TX 0x80000000
|
||||
MX6Q_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
can2 {
|
||||
pinctrl_can2_1: can2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL4__FLEXCAN2_TX 0x80000000
|
||||
MX6Q_PAD_KEY_ROW4__FLEXCAN2_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
disp0 {
|
||||
pinctrl_disp0_ipu1: disp0grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x80000000
|
||||
MX6Q_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x80000000
|
||||
MX6Q_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x80000000
|
||||
MX6Q_PAD_DI0_PIN15__IPU1_DI0_PIN15 0x80000000
|
||||
MX6Q_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x80000000
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_disp0_ipu2: disp0grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_DISP0_DAT0__IPU2_DISP0_DATA00 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT1__IPU2_DISP0_DATA01 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT2__IPU2_DISP0_DATA02 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT3__IPU2_DISP0_DATA03 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT4__IPU2_DISP0_DATA04 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT5__IPU2_DISP0_DATA05 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT6__IPU2_DISP0_DATA06 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT7__IPU2_DISP0_DATA07 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT8__IPU2_DISP0_DATA08 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT9__IPU2_DISP0_DATA09 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT10__IPU2_DISP0_DATA10 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT11__IPU2_DISP0_DATA11 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT12__IPU2_DISP0_DATA12 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT13__IPU2_DISP0_DATA13 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT14__IPU2_DISP0_DATA14 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT15__IPU2_DISP0_DATA15 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT16__IPU2_DISP0_DATA16 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT17__IPU2_DISP0_DATA17 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT18__IPU2_DISP0_DATA18 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT19__IPU2_DISP0_DATA19 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT20__IPU2_DISP0_DATA20 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT21__IPU2_DISP0_DATA21 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT22__IPU2_DISP0_DATA22 0x80000000
|
||||
MX6Q_PAD_DISP0_DAT23__IPU2_DISP0_DATA23 0x80000000
|
||||
MX6Q_PAD_DI0_PIN2__IPU2_DI0_PIN02 0x80000000
|
||||
MX6Q_PAD_DI0_PIN3__IPU2_DI0_PIN03 0x80000000
|
||||
MX6Q_PAD_DI0_PIN15__IPU2_DI0_PIN15 0x80000000
|
||||
MX6Q_PAD_DI0_DISP_CLK__IPU2_DI0_DISP_CLK 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3 {
|
||||
pinctrl_i2c3_2: i2c3grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
|
||||
MX6Q_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart2 {
|
||||
pinctrl_uart2_2: uart2grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
|
||||
MX6Q_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc2 {
|
||||
pinctrl_usdhc2_tqma6x: usdhc2grp-tqma6x {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_SD2_CMD__SD2_CMD 0x000070f0
|
||||
MX6Q_PAD_SD2_CLK__SD2_CLK 0x000070f0
|
||||
MX6Q_PAD_SD2_DAT0__SD2_DATA0 0x000070f0
|
||||
MX6Q_PAD_SD2_DAT1__SD2_DATA1 0x000070f0
|
||||
MX6Q_PAD_SD2_DAT2__SD2_DATA2 0x000070f0
|
||||
MX6Q_PAD_SD2_DAT3__SD2_DATA3 0x000070f0
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -0,0 +1,320 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
/dts-v1/;
|
||||
|
||||
#include "imx6q.dtsi"
|
||||
|
||||
/ {
|
||||
model = "TQ TQMa6x";
|
||||
compatible = "tq,tqma6x", "fsl,imx6q";
|
||||
|
||||
chosen {
|
||||
linux,stdout-path = "/soc/aips-bus@02100000/serial@021e8000";
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x10000000 0x40000000>;
|
||||
};
|
||||
|
||||
gpio_buttons: gpio_buttons@0 {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpiobuttons_1>;
|
||||
|
||||
button@1 {
|
||||
label = "button0";
|
||||
linux,code = <0x100>;
|
||||
gpios = <&gpio7 13 0>;
|
||||
};
|
||||
|
||||
button@2 {
|
||||
label = "button1";
|
||||
linux,code = <0x101>;
|
||||
gpios = <&gpio7 12 0>;
|
||||
};
|
||||
|
||||
button@3 {
|
||||
label = "button2";
|
||||
linux,code = <0x102>;
|
||||
gpios = <&gpio1 8 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&can1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can1_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can2_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&ecspi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi1_1>;
|
||||
fsl,spi-num-chipselects = <1>;
|
||||
cs-gpios = <&gpio3 19 0>;
|
||||
status = "okay";
|
||||
|
||||
flash: m25p80@0 {
|
||||
compatible = "m25p80";
|
||||
spi-max-frequency = <40000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&fec {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet_1>;
|
||||
phy-mode = "rgmii";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
ddc = <&i2c2>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3_2>;
|
||||
|
||||
pmic: pf0100@08 {
|
||||
compatible = "pf0100-regulator";
|
||||
reg = <0x08>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <10 8>;
|
||||
|
||||
regulators {
|
||||
reg_vddcore: sw1ab {
|
||||
regulator-min-microvolt = <300000>;
|
||||
regulator-max-microvolt = <1875000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vddsoc: sw1c {
|
||||
regulator-min-microvolt = <300000>;
|
||||
regulator-max-microvolt = <1875000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_gen_3v3: sw2 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_1v5a: sw3a {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_1v5b: sw3b {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_vtt: sw4 {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_5v_600mA: swbst {
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5150000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_snvs_3v: vsnvs {
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vrefddr: vrefddr {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <750000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen1_1v5: vgen1 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
/* not used */
|
||||
};
|
||||
|
||||
reg_vgen2_1v2_eth: vgen2 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen3_2v8: vgen3 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen4_1v8: vgen4 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen5_1v8_eth: vgen5 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen6_3v3: vgen6 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sensor1: lm75@48 {
|
||||
compatible = "lm75";
|
||||
reg = <0x48>;
|
||||
};
|
||||
|
||||
sensor2: lm75@49 {
|
||||
compatible = "lm75";
|
||||
reg = <0x49>;
|
||||
};
|
||||
|
||||
eeprom: m24c64@50 { /* FIXME: Baseboard */
|
||||
compatible = "st,24c64", "at24";
|
||||
reg = <0x50>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&iomuxc {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_hog>;
|
||||
|
||||
can1 {
|
||||
pinctrl_can1_1: can1grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL2__FLEXCAN1_TX 0x80000000
|
||||
MX6Q_PAD_KEY_ROW2__FLEXCAN1_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
can2 {
|
||||
pinctrl_can2_1: can2grp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL4__FLEXCAN2_TX 0x80000000
|
||||
MX6Q_PAD_KEY_ROW4__FLEXCAN2_RX 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
hog {
|
||||
pinctrl_hog: hoggrp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_ENET_CRS_DV__GPIO1_IO25 0x80000000 /* FEC phy reset */
|
||||
MX6Q_PAD_GPIO_4__GPIO1_IO04 0x80000000 /* usdhc2 CD */
|
||||
MX6Q_PAD_GPIO_2__GPIO1_IO02 0x80000000 /* usdhc2 WP */
|
||||
MX6Q_PAD_EIM_D19__GPIO3_IO19 0x80000000 /* eCSPI1 SS1 */
|
||||
MX6Q_PAD_NANDF_RB0__GPIO6_IO10 0x80000000 /* PMIC irq */
|
||||
MX6Q_PAD_EIM_D22__GPIO3_IO22 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c3 {
|
||||
pinctrl_i2c3_2: i2c3grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_GPIO_5__I2C3_SCL 0x4001b8b1
|
||||
MX6Q_PAD_GPIO_6__I2C3_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
uart2 {
|
||||
pinctrl_uart2_2: uart2grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
|
||||
MX6Q_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
gpiobuttons {
|
||||
pinctrl_gpiobuttons_1: gpiogrp-1 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_GPIO_17__GPIO7_IO12 0x80000000
|
||||
MX6Q_PAD_GPIO_18__GPIO7_IO13 0x80000000
|
||||
MX6Q_PAD_GPIO_8__GPIO1_IO08 0x80000000
|
||||
>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&sata {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2_2>;
|
||||
};
|
||||
|
||||
&usbh1 {
|
||||
status = "okay";
|
||||
barebox,phy_type = "utmi";
|
||||
disable-over-current;
|
||||
};
|
||||
|
||||
&usbotg {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usbotg_1>;
|
||||
barebox,phy_type = "utmi";
|
||||
barebox,dr_mode = "peripheral";
|
||||
dr_mode = "host";
|
||||
disable-over-current;
|
||||
otg_id_pin_select_change;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 { /* Baseboard Slot */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2_1>;
|
||||
cd-gpios = <&gpio1 4 0>;
|
||||
wp-gpios = <&gpio1 2 0>;
|
||||
max-frequency = <1000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc3 { /* eMMC */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc3_1>;
|
||||
non-removable;
|
||||
bus-width = <8>;
|
||||
status = "disabled";
|
||||
};
|
|
@ -104,6 +104,14 @@
|
|||
MX6Q_PAD_EIM_D16__ECSPI1_SCLK 0x100b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_ecspi1_2: ecspi1grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
|
||||
MX6Q_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
|
||||
MX6Q_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
ecspi3 {
|
||||
|
@ -157,6 +165,27 @@
|
|||
MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_enet_3: enetgrp-3 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
|
||||
MX6Q_PAD_ENET_MDC__ENET_MDC 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TXC__RGMII_TXC 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0
|
||||
MX6Q_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0
|
||||
MX6Q_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RD0__RGMII_RD0 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RD1__RGMII_RD1 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0
|
||||
MX6Q_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b0b0
|
||||
MX6Q_PAD_ENET_TX_EN__ENET_TX_EN 0x1b0b0
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
gpmi-nand {
|
||||
|
@ -192,6 +221,13 @@
|
|||
MX6Q_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_i2c1_2: i2c1grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_CSI0_DAT8__I2C1_SDA 0x4001b8b1
|
||||
MX6Q_PAD_CSI0_DAT9__I2C1_SCL 0x4001b8b1
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
i2c2 {
|
||||
|
@ -268,6 +304,17 @@
|
|||
MX6Q_PAD_NANDF_D7__SD2_DATA7 0x17059
|
||||
>;
|
||||
};
|
||||
|
||||
pinctrl_usdhc2_2: usdhc2grp-2 {
|
||||
fsl,pins = <
|
||||
MX6Q_PAD_SD2_CMD__SD2_CMD 0x17059
|
||||
MX6Q_PAD_SD2_CLK__SD2_CLK 0x10059
|
||||
MX6Q_PAD_SD2_DAT0__SD2_DATA0 0x17059
|
||||
MX6Q_PAD_SD2_DAT1__SD2_DATA1 0x17059
|
||||
MX6Q_PAD_SD2_DAT2__SD2_DATA2 0x17059
|
||||
MX6Q_PAD_SD2_DAT3__SD2_DATA3 0x17059
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
usdhc3 {
|
||||
|
|
|
@ -0,0 +1,190 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
/ {
|
||||
gpio_buttons: gpio_buttons@0 {
|
||||
compatible = "gpio-keys";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_gpiobuttons_1>;
|
||||
|
||||
button@1 {
|
||||
label = "s6";
|
||||
linux,code = <64>; /* KEY_F6 */
|
||||
gpios = <&gpio7 13 0>;
|
||||
};
|
||||
|
||||
button@2 {
|
||||
label = "s7";
|
||||
linux,code = <65>; /* KEY_F7 */
|
||||
gpios = <&gpio7 12 0>;
|
||||
};
|
||||
|
||||
button@3 {
|
||||
label = "s8";
|
||||
linux,code = <66>; /* KEY_F8 */
|
||||
gpios = <&gpio1 8 0>;
|
||||
};
|
||||
};
|
||||
|
||||
beeper: beeper@0 {
|
||||
compatible = "pwm-beeper";
|
||||
pwms = <&pwm1 2 5000000>;
|
||||
};
|
||||
|
||||
disp0: display@0 {
|
||||
compatible = "fsl,imx-parallel-display";
|
||||
interface-pix-fmt = "rgb24";
|
||||
gpios = <&gpio7 11 0>; /* LCD.PWR_EN */
|
||||
status = "disabled";
|
||||
|
||||
display-timings {
|
||||
tx14d11vm1cpd {
|
||||
clock-frequency = <4854369 5847953 7042253>;
|
||||
hactive = <320>;
|
||||
vactive = <240>;
|
||||
hfront-porch = <22 30 35>;
|
||||
hback-porch = <23 30 35>;
|
||||
hsync-len = <4 5 7>;
|
||||
vback-porch = <4 5 9>;
|
||||
vfront-porch = <5 6 10>;
|
||||
vsync-len = <2>;
|
||||
pixelclk-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
de-active = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio-leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
lcd-backlight-enable {
|
||||
label = "backlight";
|
||||
gpios = <&gpio4 5 0>; /* LCD.BLT_EN */
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
|
||||
lcd-contrast {
|
||||
label = "contrast";
|
||||
gpios = <&gpio4 20 0>; /* LCD.CONTRAST */
|
||||
linux,default-trigger = "default-on";
|
||||
};
|
||||
};
|
||||
|
||||
sound {
|
||||
/* Currently the kernel does not have a fabric driver for this */
|
||||
compatible = "fsl,imx6-tqma6x-tlv320aic23",
|
||||
"fsl,imx-audio-tlv320aic23";
|
||||
model = "imx6-tqma6x-tlv320aic23";
|
||||
ssi-controller = <&ssi1>;
|
||||
audio-codec = <&codec>;
|
||||
mux-int-port = <1>;
|
||||
mux-ext-port = <3>;
|
||||
};
|
||||
};
|
||||
|
||||
&audmux {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_audmux_2>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can1_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&can2 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_can2_1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
codec: tlv320@18 {
|
||||
compatible = "ti,tlv320aic23";
|
||||
reg = <0x18>;
|
||||
};
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
sensor1: lm75@49 {
|
||||
compatible = "lm75";
|
||||
reg = <0x49>;
|
||||
};
|
||||
};
|
||||
|
||||
&ldb {
|
||||
status = "disabled";
|
||||
|
||||
lvds-channel@0 {
|
||||
fsl,data-mapping = "spwg";
|
||||
fsl,data-width = <24>;
|
||||
status = "disabled";
|
||||
|
||||
display-timings {
|
||||
chimei-g070y2-l01 {
|
||||
clock-frequency = <27000000 29500000 33000000>;
|
||||
hactive = <800>;
|
||||
vactive = <480>;
|
||||
hfront-porch = <0>;
|
||||
hback-porch = <0>;
|
||||
hsync-len = <130 192 290>;
|
||||
vback-porch = <0>;
|
||||
vfront-porch = <2>;
|
||||
vsync-len = <10 20 70>;
|
||||
de-active = <1>;
|
||||
hsync-active = <0>;
|
||||
vsync-active = <0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&ssi1 {
|
||||
fsl,mode = "i2s-slave";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart2_2>;
|
||||
};
|
||||
|
||||
&usbh1 {
|
||||
status = "okay";
|
||||
barebox,phy_type = "utmi";
|
||||
disable-over-current;
|
||||
};
|
||||
|
||||
&usbotg {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usbotg_1>;
|
||||
barebox,phy_type = "utmi";
|
||||
barebox,dr_mode = "peripheral";
|
||||
dr_mode = "host";
|
||||
disable-over-current;
|
||||
otg_id_pin_select_change;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usdhc2 { /* Baseboard Slot */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc2_tqma6x>;
|
||||
cd-gpios = <&gpio1 4 0>;
|
||||
wp-gpios = <&gpio1 2 0>;
|
||||
status = "okay";
|
||||
};
|
|
@ -52,6 +52,10 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&ocotp1 {
|
||||
barebox,provide-mac-address = <&fec 0x620>;
|
||||
};
|
||||
|
||||
&uart1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_uart1_1>;
|
||||
|
|
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* Copyright 2013 Sascha Hauer, Pengutronix
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
&ecspi1 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_ecspi1_1>;
|
||||
fsl,spi-num-chipselects = <1>;
|
||||
cs-gpios = <&gpio3 19 0>;
|
||||
status = "okay";
|
||||
|
||||
flash: m25p80@0 {
|
||||
compatible = "m25p80";
|
||||
spi-max-frequency = <40000000>;
|
||||
reg = <0>;
|
||||
};
|
||||
};
|
||||
|
||||
&fec {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_enet_1>;
|
||||
phy-mode = "rgmii";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c1 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c1_2>;
|
||||
};
|
||||
|
||||
&i2c3 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_i2c3_2>;
|
||||
|
||||
pmic: pf0100@08 {
|
||||
compatible = "pf0100-regulator";
|
||||
reg = <0x08>;
|
||||
interrupt-parent = <&gpio6>;
|
||||
interrupts = <10 8>;
|
||||
|
||||
regulators {
|
||||
reg_vddcore: sw1ab {
|
||||
regulator-min-microvolt = <300000>;
|
||||
regulator-max-microvolt = <1875000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vddsoc: sw1c {
|
||||
regulator-min-microvolt = <300000>;
|
||||
regulator-max-microvolt = <1875000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_gen_3v3: sw2 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_1v5a: sw3a {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_1v5b: sw3b {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_ddr_vtt: sw4 {
|
||||
regulator-min-microvolt = <400000>;
|
||||
regulator-max-microvolt = <1975000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_5v_600mA: swbst {
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5150000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_snvs_3v: vsnvs {
|
||||
regulator-min-microvolt = <1500000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vrefddr: vrefddr {
|
||||
regulator-min-microvolt = <750000>;
|
||||
regulator-max-microvolt = <750000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen1_1v5: vgen1 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
/* not used */
|
||||
};
|
||||
|
||||
reg_vgen2_1v2_eth: vgen2 {
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1550000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen3_2v8: vgen3 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen4_1v8: vgen4 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen5_1v8_eth: vgen5 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
reg_vgen6_3v3: vgen6 {
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sensor2: lm75@48 {
|
||||
compatible = "lm75";
|
||||
reg = <0x48>;
|
||||
};
|
||||
|
||||
eeprom: m24c64@50 {
|
||||
compatible = "st,24c64", "at24";
|
||||
reg = <0x50>;
|
||||
};
|
||||
};
|
||||
|
||||
&usdhc3 { /* eMMC */
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_usdhc3_1>;
|
||||
non-removable;
|
||||
bus-width = <8>;
|
||||
status = "okay";
|
||||
};
|
|
@ -751,12 +751,12 @@
|
|||
interrupts = <0 14 0x04>;
|
||||
};
|
||||
|
||||
ocotp@021bc000 {
|
||||
ocotp1: ocotp@021bc000 {
|
||||
compatible = "fsl,imx6q-ocotp";
|
||||
reg = <0x021bc000 0x4000>;
|
||||
};
|
||||
|
||||
ocotp@021c0000 {
|
||||
ocotp2: ocotp@021c0000 {
|
||||
reg = <0x021c0000 0x4000>;
|
||||
interrupts = <0 21 0x04>;
|
||||
};
|
||||
|
|
|
@ -32,6 +32,9 @@ config ARCH_TEXT_BASE
|
|||
default 0x97f00000 if MACH_EFIKA_MX_SMARTBOOK
|
||||
default 0x17800000 if MACH_SABRESD
|
||||
default 0x4fc00000 if MACH_REALQ7
|
||||
default 0x4fc00000 if MACH_GK802
|
||||
default 0x2fc00000 if MACH_TQMA6X
|
||||
default 0x4fc00000 if MACH_PHYTEC_PFLA02
|
||||
|
||||
config BOARDINFO
|
||||
default "Eukrea CPUIMX25" if MACH_EUKREA_CPUIMX25
|
||||
|
@ -61,6 +64,7 @@ config BOARDINFO
|
|||
default "Garz+Fricke Vincell" if MACH_GUF_VINCELL
|
||||
default "SabreSD" if MACH_SABRESD
|
||||
default "DataModul i.MX6Q Real Qseven" if MACH_REALQ7
|
||||
default "Zealz GK802" if MACH_GK802
|
||||
default "unused" if IMX_MULTI_BOARDS
|
||||
|
||||
choice
|
||||
|
@ -141,22 +145,6 @@ config ARCH_IMX_EXTERNAL_BOOT_NAND
|
|||
prompt "Support Starting barebox from NAND"
|
||||
depends on ARCH_IMX_EXTERNAL_BOOT
|
||||
|
||||
choice
|
||||
depends on ARCH_IMX_EXTERNAL_BOOT_NAND
|
||||
default NAND_IMX_BOOT_512_2K
|
||||
prompt "select nand pagesize you want to support booting from"
|
||||
|
||||
config NAND_IMX_BOOT_512
|
||||
bool "512 byte page size"
|
||||
|
||||
config NAND_IMX_BOOT_2K
|
||||
bool "2048 byte page size"
|
||||
|
||||
config NAND_IMX_BOOT_512_2K
|
||||
bool "512 byte and 2048 byte pagesize"
|
||||
|
||||
endchoice
|
||||
|
||||
config BAREBOX_UPDATE_IMX_EXTERNAL_NAND
|
||||
bool
|
||||
depends on ARCH_IMX_EXTERNAL_BOOT_NAND
|
||||
|
@ -239,12 +227,24 @@ config MACH_FREESCALE_MX53_LOCO
|
|||
bool "Freescale i.MX53 LOCO"
|
||||
select ARCH_IMX53
|
||||
|
||||
config MACH_PHYTEC_PFLA02
|
||||
bool "Phytec phyFLEX-i.MX6 Ouad"
|
||||
select ARCH_IMX6
|
||||
|
||||
config MACH_REALQ7
|
||||
bool "DataModul i.MX6Q Real Qseven Board"
|
||||
select ARCH_IMX6
|
||||
select HAVE_DEFAULT_ENVIRONMENT_NEW
|
||||
select HAVE_PBL_MULTI_IMAGES
|
||||
|
||||
config MACH_GK802
|
||||
bool "Zealz GK802 Mini PC"
|
||||
select ARCH_IMX6
|
||||
|
||||
config MACH_TQMA6X
|
||||
bool "TQ tqma6x on mba6x"
|
||||
select ARCH_IMX6
|
||||
|
||||
endif
|
||||
|
||||
# ----------------------------------------------------------
|
||||
|
@ -618,6 +618,15 @@ config IMX_IIM_FUSE_BLOW
|
|||
enable it:
|
||||
imx_iim0.permanent_write_enable=1
|
||||
|
||||
config IMX_OCOTP
|
||||
tristate "i.MX6 On Chip OTP controller"
|
||||
depends on ARCH_IMX6
|
||||
depends on OFDEVICE
|
||||
help
|
||||
This adds support for the i.MX6 On-Chip OTP controller. Currently the
|
||||
only supported functionality is reading the MAC address and assigning
|
||||
it to an ethernet device.
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
|
|
@ -12,6 +12,7 @@ pbl-$(CONFIG_ARCH_IMX53) += imx53.o imx5.o esdctl-v4.o
|
|||
obj-$(CONFIG_ARCH_IMX6) += imx6.o usb-imx6.o clk-imx6.o
|
||||
lwl-$(CONFIG_ARCH_IMX6) += imx6-mmdc.o
|
||||
obj-$(CONFIG_IMX_IIM) += iim.o
|
||||
obj-$(CONFIG_IMX_OCOTP) += ocotp.o
|
||||
obj-$(CONFIG_NAND_IMX) += nand.o
|
||||
lwl-$(CONFIG_ARCH_IMX_EXTERNAL_BOOT_NAND) += external-nand-boot.o
|
||||
obj-$(CONFIG_COMMON_CLK) += clk-pllv1.o clk-pllv2.o clk-pllv3.o clk-pfd.o
|
||||
|
|
|
@ -121,40 +121,6 @@ static void __bare_init __memcpy32(void *trg, const void *src, int size)
|
|||
*t++ = *s++;
|
||||
}
|
||||
|
||||
static int __maybe_unused is_pagesize_2k(void)
|
||||
{
|
||||
#ifdef CONFIG_ARCH_IMX21
|
||||
if (readl(MX21_SYSCTRL_BASE_ADDR + 0x14) & (1 << 5))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_IMX25)
|
||||
if (readl(MX25_CCM_BASE_ADDR + MX25_CCM_RCSR) & (1 << 8))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX27
|
||||
if (readl(MX27_SYSCTRL_BASE_ADDR + 0x14) & (1 << 5))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX31
|
||||
if (readl(MX31_CCM_BASE_ADDR + MX31_CCM_RCSR) & MX31_RCSR_NFMS)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
#endif
|
||||
#if defined(CONFIG_ARCH_IMX35)
|
||||
if (readl(MX35_CCM_BASE_ADDR + MX35_CCM_RCSR) & (1 << 8))
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static noinline void __bare_init imx_nandboot_get_page(void *regs,
|
||||
u32 offs, int pagesize_2k)
|
||||
{
|
||||
|
@ -163,19 +129,12 @@ static noinline void __bare_init imx_nandboot_get_page(void *regs,
|
|||
imx_nandboot_send_page(regs, NFC_OUTPUT, pagesize_2k);
|
||||
}
|
||||
|
||||
void __bare_init imx_nand_load_image(void *dest, int size)
|
||||
void __bare_init imx_nand_load_image(void *dest, int size, void __iomem *base,
|
||||
int pagesize_2k)
|
||||
{
|
||||
u32 tmp, page, block, blocksize, pagesize, badblocks;
|
||||
int pagesize_2k = 1, bbt = 0;
|
||||
void *regs, *base, *spare0;
|
||||
|
||||
#if defined(CONFIG_NAND_IMX_BOOT_512)
|
||||
pagesize_2k = 0;
|
||||
#elif defined(CONFIG_NAND_IMX_BOOT_2K)
|
||||
pagesize_2k = 1;
|
||||
#else
|
||||
pagesize_2k = is_pagesize_2k();
|
||||
#endif
|
||||
int bbt = 0;
|
||||
void *regs, *spare0;
|
||||
|
||||
if (pagesize_2k) {
|
||||
pagesize = 2048;
|
||||
|
@ -185,21 +144,6 @@ void __bare_init imx_nand_load_image(void *dest, int size)
|
|||
blocksize = 16 * 1024;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_ARCH_IMX21
|
||||
base = (void __iomem *)MX21_NFC_BASE_ADDR;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX25
|
||||
base = (void __iomem *)MX25_NFC_BASE_ADDR;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX27
|
||||
base = (void __iomem *)MX27_NFC_BASE_ADDR;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX31
|
||||
base = (void __iomem *)MX31_NFC_BASE_ADDR;
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_IMX35
|
||||
base = (void __iomem *)MX35_NFC_BASE_ADDR;
|
||||
#endif
|
||||
if (nfc_is_v21()) {
|
||||
regs = base + 0x1e00;
|
||||
spare0 = base + 0x1000;
|
||||
|
@ -332,115 +276,120 @@ int __bare_init imx_barebox_boot_nand_external(unsigned long nfc_base)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#define BARE_INIT_FUNCTION(name) \
|
||||
void __noreturn __section(.text_bare_init_##name) \
|
||||
name
|
||||
|
||||
/*
|
||||
* SoC specific entries for booting in external NAND mode. To be called from
|
||||
* the board specific entry code. This is safe to call even if not booting from
|
||||
* NAND. In this case the booting is continued without loading an image from
|
||||
* NAND. This function needs a stack to be set up.
|
||||
*/
|
||||
#ifdef CONFIG_ARCH_IMX21
|
||||
void __bare_init __noreturn imx21_barebox_boot_nand_external(void)
|
||||
#ifdef BROKEN
|
||||
BARE_INIT_FUNCTION(imx21_barebox_boot_nand_external)(void)
|
||||
{
|
||||
unsigned long nfc_base = MX21_NFC_BASE_ADDR;
|
||||
int pagesize_2k;
|
||||
|
||||
if (imx_barebox_boot_nand_external(nfc_base)) {
|
||||
jump_sdram(nfc_base - ld_var(_text));
|
||||
|
||||
if (readl(MX21_SYSCTRL_BASE_ADDR + 0x14) & (1 << 5))
|
||||
pagesize_2k = 1;
|
||||
else
|
||||
pagesize_2k = 0;
|
||||
|
||||
imx_nand_load_image((void *)ld_var(_text),
|
||||
ld_var(barebox_image_size));
|
||||
ld_var(barebox_image_size),
|
||||
(void *)nfc_base, pagesize_2k);
|
||||
}
|
||||
|
||||
/* This function doesn't exist yet */
|
||||
imx21_barebox_entry(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_IMX25
|
||||
void __bare_init __noreturn imx25_barebox_boot_nand_external(void)
|
||||
BARE_INIT_FUNCTION(imx25_barebox_boot_nand_external)(void)
|
||||
{
|
||||
unsigned long nfc_base = MX25_NFC_BASE_ADDR;
|
||||
int pagesize_2k;
|
||||
|
||||
if (imx_barebox_boot_nand_external(nfc_base)) {
|
||||
jump_sdram(nfc_base - ld_var(_text));
|
||||
|
||||
if (readl(MX25_CCM_BASE_ADDR + MX25_CCM_RCSR) & (1 << 8))
|
||||
pagesize_2k = 1;
|
||||
else
|
||||
pagesize_2k = 0;
|
||||
|
||||
imx_nand_load_image((void *)ld_var(_text),
|
||||
ld_var(_barebox_image_size));
|
||||
ld_var(_barebox_image_size),
|
||||
(void *)nfc_base, pagesize_2k);
|
||||
}
|
||||
|
||||
imx25_barebox_entry(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_IMX27
|
||||
void __bare_init __noreturn imx27_barebox_boot_nand_external(void)
|
||||
BARE_INIT_FUNCTION(imx27_barebox_boot_nand_external)(void)
|
||||
{
|
||||
unsigned long nfc_base = MX27_NFC_BASE_ADDR;
|
||||
int pagesize_2k;
|
||||
|
||||
if (imx_barebox_boot_nand_external(nfc_base)) {
|
||||
jump_sdram(nfc_base - ld_var(_text));
|
||||
|
||||
if (readl(MX27_SYSCTRL_BASE_ADDR + 0x14) & (1 << 5))
|
||||
pagesize_2k = 1;
|
||||
else
|
||||
pagesize_2k = 0;
|
||||
|
||||
imx_nand_load_image((void *)ld_var(_text),
|
||||
ld_var(_barebox_image_size));
|
||||
ld_var(_barebox_image_size),
|
||||
(void *)nfc_base, pagesize_2k);
|
||||
}
|
||||
|
||||
imx27_barebox_entry(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_IMX31
|
||||
void __bare_init __noreturn imx31_barebox_boot_nand_external(void)
|
||||
BARE_INIT_FUNCTION(imx31_barebox_boot_nand_external)(void)
|
||||
{
|
||||
unsigned long nfc_base = MX31_NFC_BASE_ADDR;
|
||||
int pagesize_2k;
|
||||
|
||||
if (imx_barebox_boot_nand_external(nfc_base)) {
|
||||
jump_sdram(nfc_base - ld_var(_text));
|
||||
|
||||
if (readl(MX31_CCM_BASE_ADDR + MX31_CCM_RCSR) & MX31_RCSR_NFMS)
|
||||
pagesize_2k = 1;
|
||||
else
|
||||
pagesize_2k = 0;
|
||||
|
||||
imx_nand_load_image((void *)ld_var(_text),
|
||||
ld_var(_barebox_image_size));
|
||||
ld_var(_barebox_image_size),
|
||||
(void *)nfc_base, pagesize_2k);
|
||||
}
|
||||
|
||||
imx31_barebox_entry(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_IMX35
|
||||
void __bare_init __noreturn imx35_barebox_boot_nand_external(void)
|
||||
BARE_INIT_FUNCTION(imx35_barebox_boot_nand_external)(void)
|
||||
{
|
||||
unsigned long nfc_base = MX35_NFC_BASE_ADDR;
|
||||
int pagesize_2k;
|
||||
|
||||
if (imx_barebox_boot_nand_external(nfc_base)) {
|
||||
jump_sdram(nfc_base - ld_var(_text));
|
||||
|
||||
if (readl(MX35_CCM_BASE_ADDR + MX35_CCM_RCSR) & (1 << 8))
|
||||
pagesize_2k = 1;
|
||||
else
|
||||
pagesize_2k = 0;
|
||||
|
||||
imx_nand_load_image((void *)ld_var(_text),
|
||||
ld_var(_barebox_image_size));
|
||||
ld_var(_barebox_image_size),
|
||||
(void *)nfc_base, pagesize_2k);
|
||||
}
|
||||
|
||||
imx35_barebox_entry(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define CONFIG_NAND_IMX_BOOT_DEBUG
|
||||
#ifdef CONFIG_NAND_IMX_BOOT_DEBUG
|
||||
#include <command.h>
|
||||
|
||||
static int do_nand_boot_test(int argc, char *argv[])
|
||||
{
|
||||
void *dest;
|
||||
int size;
|
||||
|
||||
if (argc < 3)
|
||||
return COMMAND_ERROR_USAGE;
|
||||
|
||||
dest = (void *)strtoul_suffix(argv[1], NULL, 0);
|
||||
size = strtoul_suffix(argv[2], NULL, 0);
|
||||
|
||||
imx_nand_load_image(dest, size);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const __maybe_unused char cmd_nand_boot_test_help[] =
|
||||
"Usage: nand_boot_test <dest> <size>\n"
|
||||
"This command loads the booloader from the NAND memory like the reset\n"
|
||||
"routine does. Its intended for development tests only";
|
||||
|
||||
BAREBOX_CMD_START(nand_boot_test)
|
||||
.cmd = do_nand_boot_test,
|
||||
.usage = "load bootloader from NAND",
|
||||
BAREBOX_CMD_HELP(cmd_nand_boot_test_help)
|
||||
BAREBOX_CMD_END
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* ocotp.c - i.MX6 ocotp fusebox driver
|
||||
*
|
||||
* Provide an interface for programming and sensing the information that are
|
||||
* stored in on-chip fuse elements. This functionality is part of the IC
|
||||
* Identification Module (IIM), which is present on some i.MX CPUs.
|
||||
*
|
||||
* Copyright (c) 2010 Baruch Siach <baruch@tkos.co.il>,
|
||||
* Orex Computed Radiography
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <driver.h>
|
||||
#include <malloc.h>
|
||||
#include <xfuncs.h>
|
||||
#include <errno.h>
|
||||
#include <init.h>
|
||||
#include <net.h>
|
||||
#include <io.h>
|
||||
|
||||
/*
|
||||
* a single MAC address reference has the form
|
||||
* <&phandle regoffset>
|
||||
*/
|
||||
#define MAC_ADDRESS_PROPLEN (2 * sizeof(__be32))
|
||||
|
||||
static void imx_ocotp_init_dt(struct device_d *dev, void __iomem *base)
|
||||
{
|
||||
char mac[6];
|
||||
const __be32 *prop;
|
||||
struct device_node *node = dev->device_node;
|
||||
int len;
|
||||
|
||||
if (!node)
|
||||
return;
|
||||
|
||||
prop = of_get_property(node, "barebox,provide-mac-address", &len);
|
||||
if (!prop)
|
||||
return;
|
||||
|
||||
while (len >= MAC_ADDRESS_PROPLEN) {
|
||||
struct device_node *rnode;
|
||||
uint32_t phandle, offset, value;
|
||||
|
||||
phandle = be32_to_cpup(prop++);
|
||||
|
||||
rnode = of_find_node_by_phandle(phandle);
|
||||
offset = be32_to_cpup(prop++);
|
||||
|
||||
value = readl(base + offset + 0x10);
|
||||
mac[0] = (value >> 8);
|
||||
mac[1] = value;
|
||||
value = readl(base + offset);
|
||||
mac[2] = value >> 24;
|
||||
mac[3] = value >> 16;
|
||||
mac[4] = value >> 8;
|
||||
mac[5] = value;
|
||||
|
||||
of_eth_register_ethaddr(rnode, mac);
|
||||
|
||||
len -= MAC_ADDRESS_PROPLEN;
|
||||
}
|
||||
}
|
||||
|
||||
static int imx_ocotp_probe(struct device_d *dev)
|
||||
{
|
||||
void __iomem *base;
|
||||
|
||||
base = dev_request_mem_region(dev, 0);
|
||||
if (!base)
|
||||
return -EBUSY;
|
||||
|
||||
imx_ocotp_init_dt(dev, base);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static __maybe_unused struct of_device_id imx_ocotp_dt_ids[] = {
|
||||
{
|
||||
.compatible = "fsl,imx6q-ocotp",
|
||||
}, {
|
||||
/* sentinel */
|
||||
}
|
||||
};
|
||||
|
||||
static struct driver_d imx_ocotp_driver = {
|
||||
.name = "imx_ocotp",
|
||||
.probe = imx_ocotp_probe,
|
||||
.of_compatible = DRV_OF_COMPAT(imx_ocotp_dt_ids),
|
||||
};
|
||||
|
||||
static int imx_ocotp_init(void)
|
||||
{
|
||||
platform_driver_register(&imx_ocotp_driver);
|
||||
|
||||
return 0;
|
||||
}
|
||||
coredevice_initcall(imx_ocotp_init);
|
|
@ -35,3 +35,33 @@ CFG_start_imx6_realq7.pblx.imximg = $(board)/dmo-mx6-realq7/flash-header.imxcfg
|
|||
imximage-$(CONFIG_MACH_REALQ7) += start_imx6_realq7.pblx.imximg
|
||||
FILE_barebox-datamodul-edm-qmx6.img = start_imx6_realq7.pblx.imximg
|
||||
image-$(CONFIG_MACH_REALQ7) += barebox-datamodul-edm-qmx6.img
|
||||
|
||||
pblx-$(CONFIG_MACH_GK802) += start_imx6_gk802
|
||||
CFG_start_imx6_gk802.pblx.imximg = $(board)/gk802/flash-header.imxcfg
|
||||
imximage-$(CONFIG_MACH_GK802) += start_imx6_gk802.pblx.imximg
|
||||
FILE_barebox-gk802.img = start_imx6_gk802.pblx.imximg
|
||||
image-$(CONFIG_MACH_GK802) += barebox-gk802.img
|
||||
|
||||
pblx-$(CONFIG_MACH_TQMA6X) += start_imx6dl_mba6x
|
||||
CFG_start_imx6dl_mba6x.pblx.imximg = $(board)/tqma6x/flash-header-tqma6dl.imxcfg
|
||||
imximage-$(CONFIG_MACH_TQMA6X) += start_imx6dl_mba6x.pblx.imximg
|
||||
FILE_barebox-tq-tqma6s-mba6x.img = start_imx6dl_mba6x.pblx.imximg
|
||||
image-$(CONFIG_MACH_TQMA6X) += barebox-tq-tqma6s-mba6x.img
|
||||
|
||||
pblx-$(CONFIG_MACH_TQMA6X) += start_imx6q_mba6x
|
||||
CFG_start_imx6q_mba6x.pblx.imximg = $(board)/tqma6x/flash-header-tqma6q.imxcfg
|
||||
imximage-$(CONFIG_MACH_TQMA6X) += start_imx6q_mba6x.pblx.imximg
|
||||
FILE_barebox-tq-tqma6q-mba6x.img = start_imx6q_mba6x.pblx.imximg
|
||||
image-$(CONFIG_MACH_TQMA6X) += barebox-tq-tqma6q-mba6x.img
|
||||
|
||||
pblx-$(CONFIG_MACH_PHYTEC_PFLA02) += start_phytec_pbab01_2gib
|
||||
CFG_start_phytec_pbab01_2gib.pblx.imximg = $(board)/phytec-pfla02/flash-header-phytec-pfla02-2gib.imxcfg
|
||||
imximage-$(CONFIG_MACH_PHYTEC_PFLA02) += start_phytec_pbab01_2gib.pblx.imximg
|
||||
FILE_barebox-phytec-pbab01-2gib.img = start_phytec_pbab01_2gib.pblx.imximg
|
||||
image-$(CONFIG_MACH_PHYTEC_PFLA02) += barebox-phytec-pbab01-2gib.img
|
||||
|
||||
pblx-$(CONFIG_MACH_PHYTEC_PFLA02) += start_phytec_pbab01_1gib
|
||||
CFG_start_phytec_pbab01_1gib.pblx.imximg = $(board)/phytec-pfla02/flash-header-phytec-pfla02-1gib.imxcfg
|
||||
imximage-$(CONFIG_MACH_PHYTEC_PFLA02) += start_phytec_pbab01_1gib.pblx.imximg
|
||||
FILE_barebox-phytec-pbab01-1gib.img = start_phytec_pbab01_1gib.pblx.imximg
|
||||
image-$(CONFIG_MACH_PHYTEC_PFLA02) += barebox-phytec-pbab01-1gib.img
|
||||
|
|
|
@ -319,8 +319,13 @@ cmd_imximage_S_dcd= \
|
|||
echo '.balign STRUCT_ALIGNMENT'; \
|
||||
) > $@
|
||||
|
||||
imxcfg_cpp_flags = -Wp,-MD,$(depfile) -nostdinc -x assembler-with-cpp
|
||||
|
||||
dcd-tmp = $(subst $(comma),_,$(dot-target).dcd.tmp)
|
||||
|
||||
quiet_cmd_dcd = DCD $@
|
||||
cmd_dcd = $(objtree)/scripts/imx/imx-image -d -o $@ -c $<
|
||||
cmd_dcd = $(CPP) $(imxcfg_cpp_flags) -o $(dcd-tmp) $< ; \
|
||||
$(objtree)/scripts/imx/imx-image -d -o $@ -c $(dcd-tmp)
|
||||
|
||||
$(obj)/%.dcd: $(obj)/%.imxcfg FORCE
|
||||
$(call if_changed,dcd)
|
||||
|
@ -328,5 +333,8 @@ $(obj)/%.dcd: $(obj)/%.imxcfg FORCE
|
|||
$(obj)/%.dcd.S: $(obj)/%.dcd
|
||||
$(call cmd,imximage_S_dcd)
|
||||
|
||||
imximg-tmp = $(subst $(comma),_,$(dot-target).imxcfg.tmp)
|
||||
|
||||
quiet_cmd_imx_image = IMX-IMG $@
|
||||
cmd_imx_image = $(objtree)/scripts/imx/imx-image -b -c $(CFG_$(@F)) -f $< -o $@
|
||||
cmd_imx_image = $(CPP) $(imxcfg_cpp_flags) -o $(imximg-tmp) $(CFG_$(@F)) ; \
|
||||
$(objtree)/scripts/imx/imx-image -o $@ -b -c $(imximg-tmp) -f $<
|
||||
|
|
|
@ -492,12 +492,40 @@ struct command cmds[] = {
|
|||
},
|
||||
};
|
||||
|
||||
static char *readcmd(FILE *f)
|
||||
{
|
||||
static char *buf;
|
||||
char *str;
|
||||
ssize_t ret;
|
||||
|
||||
if (!buf) {
|
||||
buf = malloc(4096);
|
||||
if (!buf)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
str = buf;
|
||||
*str = 0;
|
||||
|
||||
while (1) {
|
||||
ret = fread(str, 1, 1, f);
|
||||
if (!ret)
|
||||
return strlen(buf) ? buf : NULL;
|
||||
|
||||
if (*str == '\n' || *str == ';') {
|
||||
*str = 0;
|
||||
return buf;
|
||||
}
|
||||
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
static int parse_config(const char *filename)
|
||||
{
|
||||
FILE *f;
|
||||
int lineno = 0;
|
||||
char *line = NULL, *tmp;
|
||||
size_t len;
|
||||
char *argv[MAXARGS];
|
||||
int nargs, i, ret;
|
||||
|
||||
|
@ -507,13 +535,14 @@ static int parse_config(const char *filename)
|
|||
exit(1);
|
||||
}
|
||||
|
||||
while ((getline(&line, &len, f)) > 0) {
|
||||
while (1) {
|
||||
line = readcmd(f);
|
||||
if (!line)
|
||||
break;
|
||||
|
||||
lineno++;
|
||||
|
||||
tmp = strchr(line, '#');
|
||||
if (tmp)
|
||||
*tmp = 0;
|
||||
tmp = strrchr(line, '\n');
|
||||
if (tmp)
|
||||
*tmp = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue