From 5d021e5237305dbcc2004816dbaf9cb5f273442f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jeremy=20Lain=C3=A9?= Date: Mon, 5 Oct 2009 19:17:56 +0200 Subject: linux-2.6.29: update SPI patch for boc01 --- .../boc01/001-090114-sqn11x0-usb-hack.patch | 17 --- .../linux/linux-2.6.29/boc01/008-081208-spi.patch | 147 --------------------- .../linux/linux-2.6.29/boc01/008-091005-spi.patch | 137 +++++++++++++++++++ recipes/linux/linux_2.6.29.bb | 2 +- 4 files changed, 138 insertions(+), 165 deletions(-) delete mode 100644 recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch delete mode 100644 recipes/linux/linux-2.6.29/boc01/008-081208-spi.patch create mode 100644 recipes/linux/linux-2.6.29/boc01/008-091005-spi.patch diff --git a/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch b/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch deleted file mode 100644 index 4bd44e25db..0000000000 --- a/recipes/linux/linux-2.6.29/boc01/001-090114-sqn11x0-usb-hack.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -ur linux-2.6.27.orig/drivers/usb/host/ehci-q.c linux-2.6.27/drivers/usb/host/ehci-q.c ---- linux-2.6.27.orig/drivers/usb/host/ehci-q.c 2008-10-10 00:13:53.000000000 +0200 -+++ linux-2.6.27/drivers/usb/host/ehci-q.c 2009-01-06 18:31:38.000000000 +0100 -@@ -799,7 +799,12 @@ - * to help them do so. So now people expect to use - * such nonconformant devices with Linux too; sigh. - */ -- info1 |= max_packet(maxp) << 16; -+ struct usb_device_descriptor *desc = &urb->dev->descriptor; -+ if (desc->idVendor == cpu_to_le16(0x148e) && desc->idProduct == cpu_to_le16(0x0900)) { -+ info1 |= 256 << 16; -+ } else { -+ info1 |= max_packet(maxp) << 16; -+ } - info2 |= (EHCI_TUNE_MULT_HS << 30); - } else { /* PIPE_INTERRUPT */ - info1 |= max_packet (maxp) << 16; diff --git a/recipes/linux/linux-2.6.29/boc01/008-081208-spi.patch b/recipes/linux/linux-2.6.29/boc01/008-081208-spi.patch deleted file mode 100644 index 9c9e402ea3..0000000000 --- a/recipes/linux/linux-2.6.29/boc01/008-081208-spi.patch +++ /dev/null @@ -1,147 +0,0 @@ -Index: linux-2.6.29/arch/powerpc/platforms/83xx/mpc831x_rdb.c -=================================================================== ---- linux-2.6.29.orig/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-03-24 00:12:14.000000000 +0100 -+++ linux-2.6.29/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-04-01 17:37:53.000000000 +0200 -@@ -15,17 +15,87 @@ - - #include - #include -+#include - - #include - #include - #include - #include -+#include -+#include - - #include "mpc83xx.h" - - /* - * Setup the architecture - */ -+struct gpio { -+ __be32 gpdir; -+ __be32 gpodr; -+ __be32 gpdat; -+ __be32 gpier; -+ __be32 gpimr; -+ __be32 gpicr; -+} __attribute__ ((packed)); -+static struct gpio *gpio_regs; -+ -+static void mpc83xx_spi_activate_cs(u8 cs, u8 polarity) -+{ -+ //printk(KERN_INFO "%s %d %d\n", __func__, cs, polarity); -+ if (polarity) -+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); -+ else -+ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14)); -+} -+ -+static void mpc83xx_spi_deactivate_cs(u8 cs, u8 polarity) -+{ -+//printk(KERN_INFO "%s %d %d\n", __func__, cs, polarity); -+ if (polarity) -+ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14)); -+ else -+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); -+ -+} -+ -+//static struct mmc_spi_platform_data mpc8313_mmc_pdata = { -+// .ocr_mask = MMC_VDD_33_34, -+//}; -+ -+static struct spi_board_info mpc8313_spi_boardinfo = { -+ .bus_num = 0x7000, -+ .chip_select = 0, -+ .max_speed_hz = 50000000, -+ .modalias = "spidev", -+// .platform_data = &mpc8313_mmc_pdata, -+}; -+ -+static int __init mpc8313_spi_init(void) -+{ -+ __be32 __iomem *psicrl; -+ -+ /* System I/O Configuration Register Low */ -+ psicrl = ioremap(get_immrbase() + MPC83XX_SICRL_OFFS, 0x4); -+ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20); -+ if (!psicrl || !gpio_regs) -+ return -ENOMEM; -+ -+ clrbits32(psicrl, 0x03F00000); -+ setbits32(psicrl, 0x30000000); -+ iounmap(psicrl); -+ -+ /* set GPIO13 as output */ -+ setbits32(&gpio_regs->gpdir, 1 << (31 - 14)); -+ clrbits32(&gpio_regs->gpodr, 1 << (31 - 14)); -+ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); -+ -+ return fsl_spi_init(&mpc8313_spi_boardinfo, 1, -+ mpc83xx_spi_activate_cs, -+ mpc83xx_spi_deactivate_cs); -+} -+ -+device_initcall(mpc8313_spi_init); -+ - static void __init mpc831x_rdb_setup_arch(void) - { - #ifdef CONFIG_PCI -@@ -40,6 +110,8 @@ - mpc83xx_add_bridge(np); - #endif - mpc831x_usb_cfg(); -+ -+ mpc8313_spi_init(); - } - - static void __init mpc831x_rdb_init_IRQ(void) -Index: linux-2.6.29/drivers/spi/spi_mpc83xx.c -=================================================================== ---- linux-2.6.29.orig/drivers/spi/spi_mpc83xx.c 2009-03-24 00:12:14.000000000 +0100 -+++ linux-2.6.29/drivers/spi/spi_mpc83xx.c 2009-04-01 17:37:53.000000000 +0200 -@@ -280,7 +280,9 @@ - if (pm) - pm--; - -- cs->hw_mode |= SPMODE_PM(pm); -+ cs->hw_mode = 0x0F700000; -+ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode); -+ - regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); - if (cs->hw_mode != regval) { - unsigned long flags; -@@ -448,7 +450,7 @@ - cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); - /* mask out bits we are going to set */ - cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH -- | SPMODE_REV | SPMODE_LOOP); -+ | SPMODE_REV ); - - if (spi->mode & SPI_CPHA) - cs->hw_mode |= SPMODE_CP_BEGIN_EDGECLK; -@@ -456,8 +458,10 @@ - cs->hw_mode |= SPMODE_CI_INACTIVEHIGH; - if (!(spi->mode & SPI_LSB_FIRST)) - cs->hw_mode |= SPMODE_REV; -- if (spi->mode & SPI_LOOP) -- cs->hw_mode |= SPMODE_LOOP; -+ -+ cs->hw_mode = 0x0F700000; -+ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode); -+ cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); - - retval = mpc83xx_spi_setup_transfer(spi, NULL); - if (retval < 0) { -@@ -637,7 +641,7 @@ - INIT_LIST_HEAD(&mpc83xx_spi->queue); - - mpc83xx_spi->workqueue = create_singlethread_workqueue( -- master->dev.parent->bus_id); -+ dev->dev.bus_id); - if (mpc83xx_spi->workqueue == NULL) { - ret = -EBUSY; - goto free_irq; diff --git a/recipes/linux/linux-2.6.29/boc01/008-091005-spi.patch b/recipes/linux/linux-2.6.29/boc01/008-091005-spi.patch new file mode 100644 index 0000000000..dce5b59f85 --- /dev/null +++ b/recipes/linux/linux-2.6.29/boc01/008-091005-spi.patch @@ -0,0 +1,137 @@ +Index: linux-2.6.29/arch/powerpc/platforms/83xx/mpc831x_rdb.c +=================================================================== +--- linux-2.6.29.orig/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-10-05 18:55:57.000000000 +0200 ++++ linux-2.6.29/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-10-05 18:57:15.000000000 +0200 +@@ -15,17 +15,78 @@ + + #include + #include ++#include + + #include + #include + #include + #include ++#include ++#include + + #include "mpc83xx.h" + + /* + * Setup the architecture + */ ++struct gpio { ++ __be32 gpdir; ++ __be32 gpodr; ++ __be32 gpdat; ++ __be32 gpier; ++ __be32 gpimr; ++ __be32 gpicr; ++} __attribute__ ((packed)); ++static struct gpio *gpio_regs; ++ ++static void mpc83xx_spi_activate_cs(u8 cs, u8 polarity) ++{ ++ if (polarity) ++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ else ++ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++} ++ ++static void mpc83xx_spi_deactivate_cs(u8 cs, u8 polarity) ++{ ++ if (polarity) ++ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ else ++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ ++} ++ ++static struct spi_board_info mpc8313_spi_boardinfo = { ++ .bus_num = 0x7000, ++ .chip_select = 0, ++ .max_speed_hz = 50000000, ++ .modalias = "spidev", ++}; ++ ++static int __init mpc8313_spi_init(void) ++{ ++ __be32 __iomem *psicrl; ++ ++ /* System I/O Configuration Register Low */ ++ psicrl = ioremap(get_immrbase() + MPC83XX_SICRL_OFFS, 0x4); ++ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20); ++ if (!psicrl || !gpio_regs) ++ return -ENOMEM; ++ ++ clrbits32(psicrl, 0x03F00000); ++ setbits32(psicrl, 0x30000000); ++ iounmap(psicrl); ++ ++ /* set GPIO13 as output */ ++ setbits32(&gpio_regs->gpdir, 1 << (31 - 14)); ++ clrbits32(&gpio_regs->gpodr, 1 << (31 - 14)); ++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14)); ++ ++ return fsl_spi_init(&mpc8313_spi_boardinfo, 1, ++ mpc83xx_spi_activate_cs, ++ mpc83xx_spi_deactivate_cs); ++} ++ + static void __init mpc831x_rdb_setup_arch(void) + { + #ifdef CONFIG_PCI +@@ -40,6 +101,7 @@ + mpc83xx_add_bridge(np); + #endif + mpc831x_usb_cfg(); ++ mpc8313_spi_init(); + } + + static void __init mpc831x_rdb_init_IRQ(void) +Index: linux-2.6.29/drivers/spi/spi_mpc83xx.c +=================================================================== +--- linux-2.6.29.orig/drivers/spi/spi_mpc83xx.c 2009-10-05 18:55:57.000000000 +0200 ++++ linux-2.6.29/drivers/spi/spi_mpc83xx.c 2009-10-05 18:59:01.000000000 +0200 +@@ -280,7 +280,9 @@ + if (pm) + pm--; + +- cs->hw_mode |= SPMODE_PM(pm); ++ cs->hw_mode = 0x0F700000; ++ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode); ++ + regval = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); + if (cs->hw_mode != regval) { + unsigned long flags; +@@ -448,7 +450,7 @@ + cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); + /* mask out bits we are going to set */ + cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH +- | SPMODE_REV | SPMODE_LOOP); ++ | SPMODE_REV ); + + if (spi->mode & SPI_CPHA) + cs->hw_mode |= SPMODE_CP_BEGIN_EDGECLK; +@@ -456,8 +458,10 @@ + cs->hw_mode |= SPMODE_CI_INACTIVEHIGH; + if (!(spi->mode & SPI_LSB_FIRST)) + cs->hw_mode |= SPMODE_REV; +- if (spi->mode & SPI_LOOP) +- cs->hw_mode |= SPMODE_LOOP; ++ ++ cs->hw_mode = 0x0F700000; ++ mpc83xx_spi_write_reg(&mpc83xx_spi->base->mode,cs->hw_mode); ++ cs->hw_mode = mpc83xx_spi_read_reg(&mpc83xx_spi->base->mode); + + retval = mpc83xx_spi_setup_transfer(spi, NULL); + if (retval < 0) { +@@ -637,7 +641,7 @@ + INIT_LIST_HEAD(&mpc83xx_spi->queue); + + mpc83xx_spi->workqueue = create_singlethread_workqueue( +- master->dev.parent->bus_id); ++ dev->dev.bus_id); + if (mpc83xx_spi->workqueue == NULL) { + ret = -EBUSY; + goto free_irq; diff --git a/recipes/linux/linux_2.6.29.bb b/recipes/linux/linux_2.6.29.bb index eb6b8b98bf..a172b6d074 100644 --- a/recipes/linux/linux_2.6.29.bb +++ b/recipes/linux/linux_2.6.29.bb @@ -27,7 +27,7 @@ SRC_URI_append_boc01 = "\ file://004-081205-usb.patch;patch=1 \ file://005-090226-isl12024.patch;patch=1 \ file://007-091005-lm73.patch;patch=1 \ - file://008-081208-spi.patch;patch=1 \ + file://008-091005-spi.patch;patch=1 \ file://011-090115-gpio.patch;patch=1 \ file://012-090219-capsense.patch;patch=1 \ file://013-090306-lcd.patch;patch=1 \ -- cgit v1.2.3