From e0f6eddce82399a5cb64d8a0055a1c620b5928e4 Mon Sep 17 00:00:00 2001 From: Eric Bénard Date: Thu, 8 Mar 2012 17:22:49 +0100 Subject: barebox: add recipe MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit barebox is a modern bootloader, this recipe adds support for the imx53qsb and includes patches to support both DA9053 and MC34708 based QSB (named MCIMX53-START & MCIMX53-START-R). These patches are now mainlined in the next branch of barebox so they will disapear in the next update (ie barebox-2012.04.0) Signed-off-by: Eric Bénard --- .../imx53qsb/0001-add-i2c-clock-support.patch | 60 +++ .../imx53qsb/0002-mfd-add-mc34708-driver.patch | 459 +++++++++++++++++++++ ...0003-i.MX53-add-silicn-revision-functions.patch | 90 ++++ .../0004-i.MX53-enable-pull-up-on-I2C0-pins.patch | 54 +++ .../imx53qsb/0005-mx53-loco-add-i2c-support.patch | 60 +++ ...0006-mx53-loco-add-board-revision-support.patch | 104 +++++ .../imx53qsb/0007-mx53-loco-update-defconfig.patch | 51 +++ .../barebox/barebox-2012.02.0/imx53qsb/config | 51 +++ .../barebox/barebox-2012.02.0/imx53qsb/defconfig | 68 +++ recipes-bsp/barebox/barebox.inc | 53 +++ recipes-bsp/barebox/barebox_2012.02.0.bb | 26 ++ 11 files changed, 1076 insertions(+) create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0001-add-i2c-clock-support.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0002-mfd-add-mc34708-driver.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0003-i.MX53-add-silicn-revision-functions.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0004-i.MX53-enable-pull-up-on-I2C0-pins.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0005-mx53-loco-add-i2c-support.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0006-mx53-loco-add-board-revision-support.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0007-mx53-loco-update-defconfig.patch create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/config create mode 100644 recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/defconfig create mode 100644 recipes-bsp/barebox/barebox.inc create mode 100644 recipes-bsp/barebox/barebox_2012.02.0.bb (limited to 'recipes-bsp') diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0001-add-i2c-clock-support.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0001-add-i2c-clock-support.patch new file mode 100644 index 0000000..83662a3 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0001-add-i2c-clock-support.patch @@ -0,0 +1,60 @@ +From 46db2c424164101964bd88f39d3693d7a786d1a4 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Mon, 20 Feb 2012 22:32:22 +0100 +Subject: [PATCH 1/7] add i2c clock support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/mach-imx/speed-imx53.c | 26 ++++++++++++++++++++++++++ + 1 files changed, 26 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-imx/speed-imx53.c b/arch/arm/mach-imx/speed-imx53.c +index 0d6ac24..a2385fa 100644 +--- a/arch/arm/mach-imx/speed-imx53.c ++++ b/arch/arm/mach-imx/speed-imx53.c +@@ -169,6 +169,31 @@ unsigned long imx_get_fecclk(void) + return imx_get_ipgclk(); + } + ++static unsigned long imx_get_ipg_perclk(void) ++{ ++ u32 reg; ++ ++ reg = ccm_readl(MX5_CCM_CBCDR); ++ if (!(reg & MX5_CCM_CBCDR_PERIPH_CLK_SEL)) ++ return pll2_sw_get_rate(); ++ reg = ccm_readl(MX5_CCM_CBCMR); ++ switch ((reg & MX5_CCM_CBCMR_PERIPH_CLK_SEL_MASK) >> ++ MX5_CCM_CBCMR_PERIPH_CLK_SEL_OFFSET) { ++ case 0: ++ return pll1_main_get_rate(); ++ case 1: ++ return pll3_sw_get_rate(); ++ /* case 2: ++ TODO : LP_APM */ ++ } ++ return 0; ++} ++ ++unsigned long imx_get_i2cclk(void) ++{ ++ return imx_get_ipg_perclk(); ++} ++ + unsigned long imx_get_mmcclk(void) + { + u32 reg, prediv, podf, rate; +@@ -201,4 +226,5 @@ void imx_dump_clocks(void) + printf("ipg: %ld\n", imx_get_ipgclk()); + printf("fec: %ld\n", imx_get_fecclk()); + printf("gpt: %ld\n", imx_get_gptclk()); ++ printf("i2c: %ld\n", imx_get_i2cclk()); + } +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0002-mfd-add-mc34708-driver.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0002-mfd-add-mc34708-driver.patch new file mode 100644 index 0000000..a494d63 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0002-mfd-add-mc34708-driver.patch @@ -0,0 +1,459 @@ +From cafc72b3292a6820a01b6c5baed4c821ba2e62e7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:00:29 +0100 +Subject: [PATCH 2/7] mfd: add mc34708 driver +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +this driver is a copie of the mc13892 one + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + drivers/mfd/Kconfig | 4 + + drivers/mfd/Makefile | 1 + + drivers/mfd/mc34708.c | 294 +++++++++++++++++++++++++++++++++++++++++++++++++ + include/mfd/mc34708.h | 102 +++++++++++++++++ + 4 files changed, 401 insertions(+), 0 deletions(-) + create mode 100644 drivers/mfd/mc34708.c + create mode 100644 include/mfd/mc34708.h + +diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig +index 87797de..b080c1c 100644 +--- a/drivers/mfd/Kconfig ++++ b/drivers/mfd/Kconfig +@@ -8,6 +8,10 @@ config I2C_MC34704 + depends on I2C + bool "MC34704 PMIC driver" + ++config I2C_MC34708 ++ depends on I2C ++ bool "MC34708 PMIC driver" ++ + config I2C_MC9SDZ60 + depends on I2C + bool "MC9SDZ60 driver" +diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile +index 1171335..bc9e0e8 100644 +--- a/drivers/mfd/Makefile ++++ b/drivers/mfd/Makefile +@@ -1,5 +1,6 @@ + obj-$(CONFIG_I2C_MC13892) += mc13892.o + obj-$(CONFIG_I2C_MC34704) += mc34704.o ++obj-$(CONFIG_I2C_MC34708) += mc34708.o + obj-$(CONFIG_I2C_MC9SDZ60) += mc9sdz60.o + obj-$(CONFIG_I2C_LP3972) += lp3972.o + obj-$(CONFIG_I2C_TWLCORE) += twl-core.o +diff --git a/drivers/mfd/mc34708.c b/drivers/mfd/mc34708.c +new file mode 100644 +index 0000000..e7f40c0 +--- /dev/null ++++ b/drivers/mfd/mc34708.c +@@ -0,0 +1,294 @@ ++/* ++ * Copyright (C) 2007 Sascha Hauer, Pengutronix ++ * 2009 Marc Kleine-Budde ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of ++ * the License, or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++ * MA 02111-1307 USA ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++#define DRIVERNAME "mc34708" ++ ++#define to_mc34708(a) container_of(a, struct mc34708, cdev) ++ ++static struct mc34708 *mc_dev; ++ ++struct mc34708 *mc34708_get(void) ++{ ++ if (!mc_dev) ++ return NULL; ++ ++ return mc_dev; ++} ++EXPORT_SYMBOL(mc34708_get); ++ ++#ifdef CONFIG_SPI ++static int spi_rw(struct spi_device *spi, void * buf, size_t len) ++{ ++ int ret; ++ ++ struct spi_transfer t = { ++ .tx_buf = (const void *)buf, ++ .rx_buf = buf, ++ .len = len, ++ .cs_change = 0, ++ .delay_usecs = 0, ++ }; ++ struct spi_message m; ++ ++ spi_message_init(&m); ++ spi_message_add_tail(&t, &m); ++ ++ if ((ret = spi_sync(spi, &m))) ++ return ret; ++ return 0; ++} ++ ++#define MXC_PMIC_REG_NUM(reg) (((reg) & 0x3f) << 25) ++#define MXC_PMIC_WRITE (1 << 31) ++ ++static int mc34708_spi_reg_read(struct mc34708 *mc34708, enum mc34708_reg reg, u32 *val) ++{ ++ uint32_t buf; ++ ++ buf = MXC_PMIC_REG_NUM(reg); ++ ++ spi_rw(mc34708->spi, &buf, 4); ++ ++ *val = buf; ++ ++ return 0; ++} ++ ++static int mc34708_spi_reg_write(struct mc34708 *mc34708, enum mc34708_reg reg, u32 val) ++{ ++ uint32_t buf = MXC_PMIC_REG_NUM(reg) | MXC_PMIC_WRITE | (val & 0xffffff); ++ ++ spi_rw(mc34708->spi, &buf, 4); ++ ++ return 0; ++} ++#endif ++ ++#ifdef CONFIG_I2C ++static int mc34708_i2c_reg_read(struct mc34708 *mc34708, enum mc34708_reg reg, u32 *val) ++{ ++ u8 buf[3]; ++ int ret; ++ ++ ret = i2c_read_reg(mc34708->client, reg, buf, 3); ++ *val = buf[0] << 16 | buf[1] << 8 | buf[2] << 0; ++ ++ return ret == 3 ? 0 : ret; ++} ++ ++static int mc34708_i2c_reg_write(struct mc34708 *mc34708, enum mc34708_reg reg, u32 val) ++{ ++ u8 buf[] = { ++ val >> 16, ++ val >> 8, ++ val >> 0, ++ }; ++ int ret; ++ ++ ret = i2c_write_reg(mc34708->client, reg, buf, 3); ++ ++ return ret == 3 ? 0 : ret; ++} ++#endif ++ ++int mc34708_reg_write(struct mc34708 *mc34708, enum mc34708_reg reg, u32 val) ++{ ++#ifdef CONFIG_I2C ++ if (mc34708->mode == MC34708_MODE_I2C) ++ return mc34708_i2c_reg_write(mc34708, reg, val); ++#endif ++#ifdef CONFIG_SPI ++ if (mc34708->mode == MC34708_MODE_SPI) ++ return mc34708_spi_reg_write(mc34708, reg, val); ++#endif ++ return -EINVAL; ++} ++EXPORT_SYMBOL(mc34708_reg_write); ++ ++int mc34708_reg_read(struct mc34708 *mc34708, enum mc34708_reg reg, u32 *val) ++{ ++#ifdef CONFIG_I2C ++ if (mc34708->mode == MC34708_MODE_I2C) ++ return mc34708_i2c_reg_read(mc34708, reg, val); ++#endif ++#ifdef CONFIG_SPI ++ if (mc34708->mode == MC34708_MODE_SPI) ++ return mc34708_spi_reg_read(mc34708, reg, val); ++#endif ++ return -EINVAL; ++} ++EXPORT_SYMBOL(mc34708_reg_read); ++ ++int mc34708_set_bits(struct mc34708 *mc34708, enum mc34708_reg reg, u32 mask, u32 val) ++{ ++ u32 tmp; ++ int err; ++ ++ err = mc34708_reg_read(mc34708, reg, &tmp); ++ tmp = (tmp & ~mask) | val; ++ ++ if (!err) ++ err = mc34708_reg_write(mc34708, reg, tmp); ++ ++ return err; ++} ++EXPORT_SYMBOL(mc34708_set_bits); ++ ++static ssize_t mc_read(struct cdev *cdev, void *_buf, size_t count, ulong offset, ulong flags) ++{ ++ struct mc34708 *priv = to_mc34708(cdev); ++ u32 *buf = _buf; ++ size_t i = count >> 2; ++ int err; ++ ++ offset >>= 2; ++ ++ while (i) { ++ err = mc34708_reg_read(priv, offset, buf); ++ if (err) ++ return (ssize_t)err; ++ buf++; ++ i--; ++ offset++; ++ } ++ ++ return count; ++} ++ ++static ssize_t mc_write(struct cdev *cdev, const void *_buf, size_t count, ulong offset, ulong flags) ++{ ++ struct mc34708 *mc34708 = to_mc34708(cdev); ++ const u32 *buf = _buf; ++ size_t i = count >> 2; ++ int err; ++ ++ offset >>= 2; ++ ++ while (i) { ++ err = mc34708_reg_write(mc34708, offset, *buf); ++ if (err) ++ return (ssize_t)err; ++ buf++; ++ i--; ++ offset++; ++ } ++ ++ return count; ++} ++ ++static struct file_operations mc_fops = { ++ .lseek = dev_lseek_default, ++ .read = mc_read, ++ .write = mc_write, ++}; ++ ++static int mc34708_query_revision(struct mc34708 *mc34708) ++{ ++ unsigned int rev_id; ++ int rev; ++ ++ mc34708_reg_read(mc34708, 7, &rev_id); ++ ++ if (rev_id > 0xFFF) ++ return -EINVAL; ++ ++ rev = rev_id & 0xFFF; ++ ++ dev_info(mc_dev->cdev.dev, "MC34708 ID: 0x%04x\n", rev); ++ ++ mc34708->revision = rev; ++ ++ return rev; ++} ++ ++static int mc_probe(struct device_d *dev, enum mc34708_mode mode) ++{ ++ int rev; ++ ++ if (mc_dev) ++ return -EBUSY; ++ ++ mc_dev = xzalloc(sizeof(struct mc34708)); ++ mc_dev->mode = mode; ++ mc_dev->cdev.name = DRIVERNAME; ++ if (mode == MC34708_MODE_I2C) { ++ mc_dev->client = to_i2c_client(dev); ++ } ++ if (mode == MC34708_MODE_SPI) { ++ mc_dev->spi = dev->type_data; ++ mc_dev->spi->mode = SPI_MODE_0 | SPI_CS_HIGH; ++ mc_dev->spi->bits_per_word = 32; ++ } ++ mc_dev->cdev.size = 256; ++ mc_dev->cdev.dev = dev; ++ mc_dev->cdev.ops = &mc_fops; ++ ++ rev = mc34708_query_revision(mc_dev); ++ if (rev < 0) { ++ free(mc_dev); ++ mc_dev = NULL; ++ return -EINVAL; ++ } ++ ++ devfs_create(&mc_dev->cdev); ++ ++ return 0; ++} ++ ++static int mc_i2c_probe(struct device_d *dev) ++{ ++ return mc_probe(dev, MC34708_MODE_I2C); ++} ++ ++static int mc_spi_probe(struct device_d *dev) ++{ ++ return mc_probe(dev, MC34708_MODE_SPI); ++} ++ ++static struct driver_d mc_i2c_driver = { ++ .name = "mc34708-i2c", ++ .probe = mc_i2c_probe, ++}; ++ ++static struct driver_d mc_spi_driver = { ++ .name = "mc34708-spi", ++ .probe = mc_spi_probe, ++}; ++ ++static int mc_init(void) ++{ ++ register_driver(&mc_i2c_driver); ++ register_driver(&mc_spi_driver); ++ return 0; ++} ++ ++device_initcall(mc_init); +diff --git a/include/mfd/mc34708.h b/include/mfd/mc34708.h +new file mode 100644 +index 0000000..f384c62 +--- /dev/null ++++ b/include/mfd/mc34708.h +@@ -0,0 +1,102 @@ ++/* ++ * Copyright (C) 2009 Marc Kleine-Budde ++ * ++ * This file is released under the GPLv2 ++ * ++ * Derived from: ++ * - arch-mxc/pmic_external.h -- contains interface of the PMIC protocol driver ++ * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved. ++ * ++ */ ++ ++#ifndef __ASM_ARCH_MC34708_H ++#define __ASM_ARCH_MC34708_H ++ ++enum mc34708_reg { ++ MC34708_REG_INT_STATUS0 = 0x00, ++ MC34708_REG_INT_MASK0 = 0x01, ++ MC34708_REG_INT_SENSE0 = 0x02, ++ MC34708_REG_INT_STATUS1 = 0x03, ++ MC34708_REG_INT_MASK1 = 0x04, ++ MC34708_REG_INT_SENSE1 = 0x05, ++ MC34708_REG_PU_MODE_S = 0x06, ++ MC34708_REG_IDENTIFICATION = 0x07, ++ MC34708_REG_REG_FAULT_S = 0x08, ++ MC34708_REG_ACC0 = 0x09, ++ MC34708_REG_ACC1 = 0x0a, ++ MC34708_REG_ACC2 = 0x0b, ++ MC34708_REG_UNUSED0 = 0x0c, ++ MC34708_REG_POWER_CTL0 = 0x0d, ++ MC34708_REG_POWER_CTL1 = 0x0e, ++ MC34708_REG_POWER_CTL2 = 0x0f, ++ MC34708_REG_MEM_A = 0x10, ++ MC34708_REG_MEM_B = 0x11, ++ MC34708_REG_MEM_C = 0x12, ++ MC34708_REG_MEM_D = 0x13, ++ MC34708_REG_RTC_TIME = 0x14, ++ MC34708_REG_RTC_ALARM = 0x15, ++ MC34708_REG_RTC_DAY = 0x16, ++ MC34708_REG_RTC_DAY_ALARM = 0x17, ++ MC34708_REG_1 = 0x18, ++ MC34708_REG_2_3 = 0x19, ++ MC34708_REG_4 = 0x1a, ++ MC34708_REG_5 = 0x1b, ++ MC34708_REG_1_2_MODE = 0x1c, ++ MC34708_REG_3_4_5_MODE = 0x1d, ++ MC34708_REG_SETTING_0 = 0x1e, ++ MC34708_REG_SWBST_CTRL = 0x1f, ++ MC34708_REG_MODE_0 = 0x20, ++ MC34708_REG_GPIOLV0_CTRL = 0x21, ++ MC34708_REG_GPIOLV1_CTRL = 0x22, ++ MC34708_REG_GPIOLV2_CTRL = 0x23, ++ MC34708_REG_GPIOLV3_CTRL = 0x24, ++ MC34708_REG_USB_TIMING = 0x25, ++ MC34708_REG_USB_BUTTON = 0x26, ++ MC34708_REG_USB_CTRL = 0x27, ++ MC34708_REG_USB_DEVTYPE = 0x28, ++ MC34708_REG_UNUSED1 = 0x29, ++ MC34708_REG_UNUSED2 = 0x2a, ++ MC34708_REG_ADC0 = 0x2b, ++ MC34708_REG_ADC1 = 0x2c, ++ MC34708_REG_ADC2 = 0x2d, ++ MC34708_REG_ADC3 = 0x2e, ++ MC34708_REG_ADC4 = 0x2f, ++ MC34708_REG_ADC5 = 0x30, ++ MC34708_REG_ADC6 = 0x31, ++ MC34708_REG_ADC7 = 0x32, ++ MC34708_REG_BAT_PROFILE = 0x33, ++ MC34708_REG_CHRG_DEBOUNCE = 0x34, ++ MC34708_REG_CHRG_SOURCE = 0x35, ++ MC34708_REG_CHRG_LED_CTRL = 0x36, ++ MC34708_REG_PWM_CTRL = 0x37, ++ MC34708_REG_UNUSED3 = 0x38, ++ MC34708_REG_UNUSED4 = 0x39, ++ MC34708_REG_UNUSED5 = 0x3a, ++ MC34708_REG_UNUSED6 = 0x3b, ++ MC34708_REG_UNUSED7 = 0x3c, ++ MC34708_REG_UNUSED8 = 0x3d, ++ MC34708_REG_UNUSED9 = 0x3e, ++ MC34708_REG_UNUSED10 = 0x3f, ++}; ++ ++ ++enum mc34708_mode { ++ MC34708_MODE_I2C, ++ MC34708_MODE_SPI, ++}; ++ ++struct mc34708 { ++ struct cdev cdev; ++ struct i2c_client *client; ++ struct spi_device *spi; ++ enum mc34708_mode mode; ++ unsigned int revision; ++}; ++ ++extern struct mc34708 *mc34708_get(void); ++ ++extern int mc34708_reg_read(struct mc34708 *mc34708, enum mc34708_reg reg, u32 *val); ++extern int mc34708_reg_write(struct mc34708 *mc34708, enum mc34708_reg reg, u32 val); ++extern int mc34708_set_bits(struct mc34708 *mc34708, enum mc34708_reg reg, u32 mask, u32 val); ++ ++#endif /* __ASM_ARCH_MC34708_H */ +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0003-i.MX53-add-silicn-revision-functions.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0003-i.MX53-add-silicn-revision-functions.patch new file mode 100644 index 0000000..9bb2a56 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0003-i.MX53-add-silicn-revision-functions.patch @@ -0,0 +1,90 @@ +From 2feeb3198c6d9771f20c03bc1363db40241fd8f5 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:05:43 +0100 +Subject: [PATCH 3/7] i.MX53: add silicn revision functions +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/mach-imx/imx53.c | 45 +++++++++++++++++++++++++++ + arch/arm/mach-imx/include/mach/imx53-regs.h | 5 +++ + 2 files changed, 50 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/mach-imx/imx53.c b/arch/arm/mach-imx/imx53.c +index 2fb18e7..ad45be3 100644 +--- a/arch/arm/mach-imx/imx53.c ++++ b/arch/arm/mach-imx/imx53.c +@@ -37,6 +37,51 @@ void *imx_gpio_base[] = { + + int imx_gpio_count = ARRAY_SIZE(imx_gpio_base) * 32; + ++#define SI_REV 0x48 ++ ++static u32 mx53_silicon_revision; ++static char *mx53_rev_string = "unknown"; ++ ++int imx_silicon_revision(void) ++{ ++ return mx53_silicon_revision; ++} ++ ++static int query_silicon_revision(void) ++{ ++ void __iomem *rom = MX53_IROM_BASE_ADDR; ++ u32 rev; ++ ++ rev = readl(rom + SI_REV); ++ switch (rev) { ++ case 0x10: ++ mx53_silicon_revision = MX53_CHIP_REV_1_0; ++ mx53_rev_string = "1.0"; ++ break; ++ case 0x20: ++ mx53_silicon_revision = MX53_CHIP_REV_2_0; ++ mx53_rev_string = "2.0"; ++ break; ++ case 0x21: ++ mx53_silicon_revision = MX53_CHIP_REV_2_1; ++ mx53_rev_string = "2.1"; ++ break; ++ default: ++ mx53_silicon_revision = 0; ++ } ++ ++ return 0; ++} ++core_initcall(query_silicon_revision); ++ ++static int imx53_print_silicon_rev(void) ++{ ++ printf("detected i.MX53 rev %s\n", mx53_rev_string); ++ ++ return 0; ++} ++device_initcall(imx53_print_silicon_rev); ++ + static int imx53_init(void) + { + add_generic_device("imx_iim", 0, NULL, MX53_IIM_BASE_ADDR, SZ_4K, +diff --git a/arch/arm/mach-imx/include/mach/imx53-regs.h b/arch/arm/mach-imx/include/mach/imx53-regs.h +index 8fefc54..065bf08 100644 +--- a/arch/arm/mach-imx/include/mach/imx53-regs.h ++++ b/arch/arm/mach-imx/include/mach/imx53-regs.h +@@ -135,5 +135,10 @@ + #define MX53_CS2_96MB_BASE_ADDR 0xF6000000 + #define MX53_CS3_BASE_ADDR 0xF6000000 + ++/* silicon revisions specific to i.MX53 */ ++#define MX53_CHIP_REV_1_0 0x10 ++#define MX53_CHIP_REV_2_0 0x20 ++#define MX53_CHIP_REV_2_1 0x21 ++ + #endif /* __MACH_IMX53_REGS_H */ + +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0004-i.MX53-enable-pull-up-on-I2C0-pins.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0004-i.MX53-enable-pull-up-on-I2C0-pins.patch new file mode 100644 index 0000000..04fda83 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0004-i.MX53-enable-pull-up-on-I2C0-pins.patch @@ -0,0 +1,54 @@ +From 2099c301274b8273e9cf68fc76dd03225681b5df Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:06:51 +0100 +Subject: [PATCH 4/7] i.MX53: enable pull up on I2C0 pins +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +this allows I2C to work on boards which don't have external pull up +(like LOCO board) + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/mach-imx/include/mach/iomux-mx53.h | 8 +++++--- + 1 files changed, 5 insertions(+), 3 deletions(-) + +diff --git a/arch/arm/mach-imx/include/mach/iomux-mx53.h b/arch/arm/mach-imx/include/mach/iomux-mx53.h +index 527f8fe..ac94deb 100644 +--- a/arch/arm/mach-imx/include/mach/iomux-mx53.h ++++ b/arch/arm/mach-imx/include/mach/iomux-mx53.h +@@ -30,7 +30,9 @@ + #define MX53_SDHC_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_PKE | PAD_CTL_PUE | \ + PAD_CTL_PUS_47K_UP | PAD_CTL_DSE_HIGH | \ + PAD_CTL_SRE_FAST) +- ++#define MX53_I2C_PAD_CTRL (PAD_CTL_HYS | PAD_CTL_PKE | PAD_CTL_PUE | \ ++ PAD_CTL_PUS_22K_UP | PAD_CTL_DSE_HIGH | \ ++ PAD_CTL_SRE_FAST) + + #define MX53_PAD_GPIO_19__KPP_COL_5 IOMUX_PAD(0x348, 0x020, 0, 0x840, 0, NO_PAD_CTRL) + #define MX53_PAD_GPIO_19__GPIO4_5 IOMUX_PAD(0x348, 0x020, 1, __NA_, 0, NO_PAD_CTRL) +@@ -377,7 +379,7 @@ + #define MX53_PAD_CSI0_DAT8__KPP_COL_7 IOMUX_PAD(0x40C, 0x0E0, 2, 0x848, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT8__ECSPI2_SCLK IOMUX_PAD(0x40C, 0x0E0, 3, 0x7B8, 1, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT8__USBOH3_USBH3_OC IOMUX_PAD(0x40C, 0x0E0, 4, __NA_, 0, NO_PAD_CTRL) +-#define MX53_PAD_CSI0_DAT8__I2C1_SDA IOMUX_PAD(0x40C, 0x0E0, 5 | IOMUX_CONFIG_SION, 0x818, 0, NO_PAD_CTRL) ++#define MX53_PAD_CSI0_DAT8__I2C1_SDA IOMUX_PAD(0x40C, 0x0E0, 5 | IOMUX_CONFIG_SION, 0x818, 0, MX53_I2C_PAD_CTRL) + #define MX53_PAD_CSI0_DAT8__EMI_EMI_DEBUG_37 IOMUX_PAD(0x40C, 0x0E0, 6, __NA_, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT8__TPIU_TRACE_5 IOMUX_PAD(0x40C, 0x0E0, 7, __NA_, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT9__IPU_CSI0_D_9 IOMUX_PAD(0x410, 0x0E4, 0, __NA_, 0, NO_PAD_CTRL) +@@ -385,7 +387,7 @@ + #define MX53_PAD_CSI0_DAT9__KPP_ROW_7 IOMUX_PAD(0x410, 0x0E4, 2, 0x854, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT9__ECSPI2_MOSI IOMUX_PAD(0x410, 0x0E4, 3, 0x7C0, 1, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT9__USBOH3_USBH3_PWR IOMUX_PAD(0x410, 0x0E4, 4, __NA_, 0, NO_PAD_CTRL) +-#define MX53_PAD_CSI0_DAT9__I2C1_SCL IOMUX_PAD(0x410, 0x0E4, 5 | IOMUX_CONFIG_SION, 0x814, 0, NO_PAD_CTRL) ++#define MX53_PAD_CSI0_DAT9__I2C1_SCL IOMUX_PAD(0x410, 0x0E4, 5 | IOMUX_CONFIG_SION, 0x814, 0, MX53_I2C_PAD_CTRL) + #define MX53_PAD_CSI0_DAT9__EMI_EMI_DEBUG_38 IOMUX_PAD(0x410, 0x0E4, 6, __NA_, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT9__TPIU_TRACE_6 IOMUX_PAD(0x410, 0x0E4, 7, __NA_, 0, NO_PAD_CTRL) + #define MX53_PAD_CSI0_DAT10__IPU_CSI0_D_10 IOMUX_PAD(0x414, 0x0E8, 0, __NA_, 0, NO_PAD_CTRL) +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0005-mx53-loco-add-i2c-support.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0005-mx53-loco-add-i2c-support.patch new file mode 100644 index 0000000..162a8da --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0005-mx53-loco-add-i2c-support.patch @@ -0,0 +1,60 @@ +From dfb46dc4a8e593dca0c0af1dc8ac7ce87fcabb5f Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:08:07 +0100 +Subject: [PATCH 5/7] mx53-loco: add i2c support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +and register mc34708 which is present on MCIMX53-START-R board + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/boards/freescale-mx53-loco/board.c | 15 +++++++++++++++ + 1 files changed, 15 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c +index fa3a409..14c053a 100644 +--- a/arch/arm/boards/freescale-mx53-loco/board.c ++++ b/arch/arm/boards/freescale-mx53-loco/board.c +@@ -36,6 +36,9 @@ + #include + #include + ++#include ++#include ++ + #include + #include + #include +@@ -88,6 +91,16 @@ static struct pad_desc loco_pads[] = { + MX53_PAD_EIM_DA11__GPIO3_11, + /* SD3_WP */ + MX53_PAD_EIM_DA12__GPIO3_12, ++ ++ /* I2C0 */ ++ MX53_PAD_CSI0_DAT8__I2C1_SDA, ++ MX53_PAD_CSI0_DAT9__I2C1_SCL, ++}; ++ ++static struct i2c_board_info i2c_devices[] = { ++ { ++ I2C_BOARD_INFO("mc34708-i2c", 0x08), ++ }, + }; + + static int loco_mem_init(void) +@@ -131,6 +144,8 @@ static int loco_devices_init(void) + imx53_add_fec(&fec_info); + imx53_add_mmc0(&loco_sd1_data); + imx53_add_mmc2(&loco_sd3_data); ++ i2c_register_board_info(0, i2c_devices, ARRAY_SIZE(i2c_devices)); ++ imx53_add_i2c0(NULL); + + loco_fec_reset(); + +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0006-mx53-loco-add-board-revision-support.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0006-mx53-loco-add-board-revision-support.patch new file mode 100644 index 0000000..0a08427 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0006-mx53-loco-add-board-revision-support.patch @@ -0,0 +1,104 @@ +From 99324818889fb34c36dd8d15b920bea78bdced35 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:09:15 +0100 +Subject: [PATCH 6/7] mx53-loco: add board revision support +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- this is taken from freescale-mx35-3-stack/3stack.c and allows +this board to run Freescale's kernel which relies on the system +revision to configure the correct PMIC. + +- On rev0 boards (with DA9053), the log is : +detected i.MX53 rev 2.1 +MCIMX53-START board 1.0 + +On newer boards (rev A or B with MC34708), the log is : +mc34708-i2c@mc34708-i2c0: MC34708 ID: 0x0014 +detected i.MX53 rev 2.1 +MCIMX53-START-R board 1.0 rev B + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/boards/freescale-mx53-loco/board.c | 51 +++++++++++++++++++++++++++ + 1 files changed, 51 insertions(+), 0 deletions(-) + +diff --git a/arch/arm/boards/freescale-mx53-loco/board.c b/arch/arm/boards/freescale-mx53-loco/board.c +index 14c053a..115a8a3 100644 +--- a/arch/arm/boards/freescale-mx53-loco/board.c ++++ b/arch/arm/boards/freescale-mx53-loco/board.c +@@ -103,6 +103,31 @@ static struct i2c_board_info i2c_devices[] = { + }, + }; + ++/* ++ * Revision to be passed to kernel. The kernel provided ++ * by freescale relies on this. ++ * ++ * C --> CPU type ++ * S --> Silicon revision ++ * B --> Board rev ++ * ++ * 31 20 16 12 8 4 0 ++ * | Cmaj | Cmin | B | Smaj | Smin| ++ * ++ * e.g 0x00053120 --> i.MX35, Cpu silicon rev 2.0, Board rev 2 ++*/ ++static unsigned int loco_system_rev = 0x00053000; ++ ++static void set_silicon_rev( int rev) ++{ ++ loco_system_rev = loco_system_rev | (rev & 0xFF); ++} ++ ++static void set_board_rev(int rev) ++{ ++ loco_system_rev = (loco_system_rev & ~(0xF << 8)) | (rev & 0xF) << 8; ++} ++ + static int loco_mem_init(void) + { + arm_add_mem_device("ram0", 0x70000000, SZ_512M); +@@ -149,6 +174,8 @@ static int loco_devices_init(void) + + loco_fec_reset(); + ++ set_silicon_rev(imx_silicon_revision()); ++ + armlinux_set_bootparams((void *)0x70000100); + armlinux_set_architecture(MACH_TYPE_MX53_LOCO); + +@@ -177,3 +204,27 @@ static int loco_console_init(void) + } + + console_initcall(loco_console_init); ++ ++static int loco_pmic_init(void) ++{ ++ struct mc34708 *mc34708; ++ int rev; ++ ++ mc34708 = mc34708_get(); ++ if (!mc34708) { ++ /* so we have a DA9053 based board */ ++ printf("MCIMX53-START board 1.0\n"); ++ armlinux_set_revision(loco_system_rev); ++ return 0; ++ } ++ ++ /* get the board revision from fuse */ ++ rev = readl(MX53_IIM_BASE_ADDR + 0x878); ++ set_board_rev(rev); ++ printf("MCIMX53-START-R board 1.0 rev %c\n", (rev == 1) ? 'A' : 'B' ); ++ armlinux_set_revision(loco_system_rev); ++ ++ return 0; ++} ++ ++late_initcall(loco_pmic_init); +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0007-mx53-loco-update-defconfig.patch b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0007-mx53-loco-update-defconfig.patch new file mode 100644 index 0000000..6518886 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/0007-mx53-loco-update-defconfig.patch @@ -0,0 +1,51 @@ +From fdfefcad6edda451b0fd44b0e622f4dfe9699040 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Eric=20B=C3=A9nard?= +Date: Tue, 21 Feb 2012 01:24:14 +0100 +Subject: [PATCH 7/7] mx53-loco: update defconfig +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Eric Bénard +--- +Upstream-Status: Applied for 2012.04.0 + + arch/arm/configs/freescale_mx53_loco_defconfig | 5 ++++- + 1 files changed, 4 insertions(+), 1 deletions(-) + +diff --git a/arch/arm/configs/freescale_mx53_loco_defconfig b/arch/arm/configs/freescale_mx53_loco_defconfig +index b4e872d..bd2bdbe 100644 +--- a/arch/arm/configs/freescale_mx53_loco_defconfig ++++ b/arch/arm/configs/freescale_mx53_loco_defconfig +@@ -21,7 +21,6 @@ CONFIG_DEBUG_INFO=y + CONFIG_CMD_EDIT=y + CONFIG_CMD_SLEEP=y + CONFIG_CMD_SAVEENV=y +-CONFIG_CMD_LOADENV=y + CONFIG_CMD_EXPORT=y + CONFIG_CMD_PRINTENV=y + CONFIG_CMD_READLINE=y +@@ -46,6 +45,7 @@ CONFIG_CMD_MAGICVAR=y + CONFIG_CMD_MAGICVAR_HELP=y + CONFIG_CMD_GPIO=y + CONFIG_CMD_UNCOMPRESS=y ++CONFIG_CMD_I2C=y + CONFIG_NET=y + CONFIG_NET_DHCP=y + CONFIG_NET_NFS=y +@@ -55,9 +55,12 @@ CONFIG_NET_TFTP_PUSH=y + CONFIG_NET_NETCONSOLE=y + CONFIG_DRIVER_NET_FEC_IMX=y + # CONFIG_SPI is not set ++CONFIG_I2C=y ++CONFIG_I2C_IMX=y + CONFIG_MCI=y + CONFIG_MCI_STARTUP=y + CONFIG_MCI_IMX_ESDHC=y ++CONFIG_I2C_MC34708=y + CONFIG_FS_FAT=y + CONFIG_FS_FAT_WRITE=y + CONFIG_FS_FAT_LFN=y +-- +1.7.7.6 + diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/config b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/config new file mode 100644 index 0000000..3398c95 --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/config @@ -0,0 +1,51 @@ +#!/bin/sh + +machine=imx53qsb +eth0.serverip= +user= + +# use 'dhcp' to do dhcp in barebox and in kernel +# use 'none' if you want to skip kernel ip autoconfiguration +ip=dhcp + +# or set your networking parameters here +#eth0.ipaddr=a.b.c.d +#eth0.netmask=a.b.c.d +#eth0.gateway=a.b.c.d +#eth0.serverip=a.b.c.d + +# can be either 'nfs', 'tftp', 'nor' or 'nand' +kernel_loc=disk +# can be either 'net', 'nor', 'nand' or 'initrd' +rootfs_loc=disk + +# boot parameters for SDCard boot +kernel_part=disk0.kernel +rootfs_part_linux_dev=mmcblk0p1 +rootfs_type=ext3 + +# can be either 'jffs2' or 'ubifs' +#rootfs_type=ubifs +rootfsimage=rootfs-$machine.$rootfs_type + +#kernelimage=zImage-$machine +kernelimage=uImage-$machine.bin +#kernelimage=Image-$machine +#kernelimage=Image-$machine.lzo + +if [ -n $user ]; then + kernelimage="$user"-"$kernelimage" + nfsroot="$eth0.serverip:/home/$user/nfsroot/$machine" + rootfsimage="$user"-"$rootfsimage" +else + nfsroot="$eth0.serverip:/path/to/nfs/root" +fi + +autoboot_timeout=3 + +bootargs="console=ttymxc0,115200" + +disk_parts="512k(barebox)ro,512k(bareboxenv),4M(kernel),-(root)" + +# set a fancy prompt (if support is compiled in) +PS1="\e[1;32mbarebox@\e[1;31m\h:\w\e[0m " diff --git a/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/defconfig b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/defconfig new file mode 100644 index 0000000..bd2bdbe --- /dev/null +++ b/recipes-bsp/barebox/barebox-2012.02.0/imx53qsb/defconfig @@ -0,0 +1,68 @@ +CONFIG_ARCH_IMX=y +CONFIG_ARCH_IMX53=y +CONFIG_IMX_IIM=y +CONFIG_IMX_IIM_FUSE_BLOW=y +CONFIG_AEABI=y +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ARM_UNWIND=y +CONFIG_MMU=y +CONFIG_TEXT_BASE=0x7ff00000 +CONFIG_MALLOC_SIZE=0x2000000 +CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y +CONFIG_LONGHELP=y +CONFIG_GLOB=y +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC=y +CONFIG_DEFAULT_ENVIRONMENT_PATH="defaultenv arch/arm/boards/freescale-mx53-loco/env/" +CONFIG_DEBUG_INFO=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_SLEEP=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_PRINTENV=y +CONFIG_CMD_READLINE=y +CONFIG_CMD_TIME=y +CONFIG_CMD_ECHO_E=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_IOMEM=y +CONFIG_CMD_FLASH=y +CONFIG_CMD_BOOTM_SHOW_TYPE=y +CONFIG_CMD_BOOTM_VERBOSE=y +CONFIG_CMD_BOOTM_INITRD=y +CONFIG_CMD_BOOTM_OFTREE=y +CONFIG_CMD_BOOTM_OFTREE_UIMAGE=y +CONFIG_CMD_UIMAGE=y +# CONFIG_CMD_BOOTZ is not set +# CONFIG_CMD_BOOTU is not set +CONFIG_CMD_RESET=y +CONFIG_CMD_GO=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_PARTITION=y +CONFIG_CMD_MAGICVAR=y +CONFIG_CMD_MAGICVAR_HELP=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_UNCOMPRESS=y +CONFIG_CMD_I2C=y +CONFIG_NET=y +CONFIG_NET_DHCP=y +CONFIG_NET_NFS=y +CONFIG_NET_PING=y +CONFIG_NET_TFTP=y +CONFIG_NET_TFTP_PUSH=y +CONFIG_NET_NETCONSOLE=y +CONFIG_DRIVER_NET_FEC_IMX=y +# CONFIG_SPI is not set +CONFIG_I2C=y +CONFIG_I2C_IMX=y +CONFIG_MCI=y +CONFIG_MCI_STARTUP=y +CONFIG_MCI_IMX_ESDHC=y +CONFIG_I2C_MC34708=y +CONFIG_FS_FAT=y +CONFIG_FS_FAT_WRITE=y +CONFIG_FS_FAT_LFN=y +CONFIG_ZLIB=y +CONFIG_LZO_DECOMPRESS=y diff --git a/recipes-bsp/barebox/barebox.inc b/recipes-bsp/barebox/barebox.inc new file mode 100644 index 0000000..1272259 --- /dev/null +++ b/recipes-bsp/barebox/barebox.inc @@ -0,0 +1,53 @@ +DESCRIPTION = "Barebox - a bootloader that inherits the best of U-Boot and the Linux kernel" +HOMEPAGE = "http://www.barebox.org/" +SECTION = "bootloader" +PROVIDES = "virtual/bootloader" +PRIORITY = "optional" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://COPYING;md5=057bf9e50e1ca857d0eb97bfe4ba8e5d" + +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit kernel-arch + +EXTRA_OEMAKE = "CROSS_COMPILE=${TARGET_PREFIX}" + +BAREBOX_BINARY ?= "barebox.bin" +BAREBOX_IMAGE ?= "barebox-${MACHINE}-${PV}-${PR}.bin" +BAREBOXENV_BIN ?= "bareboxenv-${MACHINE}-${PV}-${PR}.bin" +BAREBOX_SYMLINK ?= "barebox-${MACHINE}.bin" +BAREBOXENV_SYMLINK ?= "bareboxenv-${MACHINE}.bin" + +INSANE_SKIP_${PN} = "True" + +do_configure_prepend() { + cp ${WORKDIR}/defconfig ${S}/.config + oe_runmake oldconfig +} + +do_compile () { + unset LDFLAGS + unset CFLAGS + unset CPPFLAGS + oe_runmake all +} + +do_deploy () { + install -d ${DEPLOY_DIR_IMAGE} + install ${S}/${BAREBOX_BINARY} ${DEPLOY_DIR_IMAGE}/${BAREBOX_IMAGE} + install ${S}/barebox_default_env ${DEPLOY_DIR_IMAGE}/${BAREBOXENV_BIN} + + cd ${DEPLOY_DIR_IMAGE} + rm -f ${BAREBOX_SYMLINK} + rm -f ${BAREBOXENV_SYMLINK} + ln -sf ${BAREBOX_IMAGE} ${BAREBOX_SYMLINK} + ln -sf ${BAREBOXENV_BIN} ${BAREBOXENV_SYMLINK} + + install -d ${STAGING_BINDIR_NATIVE} + cd ${S} + install -m 755 scripts/mkimage ${STAGING_BINDIR_NATIVE}/ + install -m 755 scripts/bareboxenv ${STAGING_BINDIR_NATIVE}/ +} + +do_deploy[dirs] = "${S}" +addtask deploy before do_build after do_compile diff --git a/recipes-bsp/barebox/barebox_2012.02.0.bb b/recipes-bsp/barebox/barebox_2012.02.0.bb new file mode 100644 index 0000000..3969c79 --- /dev/null +++ b/recipes-bsp/barebox/barebox_2012.02.0.bb @@ -0,0 +1,26 @@ +require barebox.inc + +PR = "r0" + +SRC_URI = "http://barebox.org/download/${PN}-${PV}.tar.bz2 \ + file://defconfig \ + " + +SRC_URI[md5sum] = "ce876bb3ba1f60b5ee08f13dc648f702" +SRC_URI[sha256sum] = "5cd1fcbd6596d3fad1b25a79706a9a76508e8c0d2a85e79ef2d91754caa6667b" + +SRC_URI_append_imx53qsb = " \ + file://config \ + file://0001-add-i2c-clock-support.patch \ + file://0002-mfd-add-mc34708-driver.patch \ + file://0003-i.MX53-add-silicn-revision-functions.patch \ + file://0004-i.MX53-enable-pull-up-on-I2C0-pins.patch \ + file://0005-mx53-loco-add-i2c-support.patch \ + file://0006-mx53-loco-add-board-revision-support.patch \ + file://0007-mx53-loco-update-defconfig.patch \ + " + +do_configure_prepend_imx53qsb() { + cp ${WORKDIR}/config ${S}/arch/arm/boards/freescale-mx53-loco/env + oe_runmake oldconfig +} -- cgit v1.2.3-54-g00ecf