--- /dev/null
+From ca7fe2db892dcf91b2c72ee352eda4ff867903a7 Mon Sep 17 00:00:00 2001
+From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Date: Thu, 17 Nov 2011 16:14:23 +0900
+Subject: pch_dma: Support new device LAPIS Semiconductor ML7831 IOH
+
+From: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+
+commit ca7fe2db892dcf91b2c72ee352eda4ff867903a7 upstream.
+
+ML7831 is companion chip for Intel Atom E6xx series.
+
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Vinod Koul <vinod.koul@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/dma/Kconfig | 13 ++++++-------
+ drivers/dma/pch_dma.c | 8 ++++++--
+ 2 files changed, 12 insertions(+), 9 deletions(-)
+
+--- a/drivers/dma/Kconfig
++++ b/drivers/dma/Kconfig
+@@ -201,18 +201,17 @@ config PL330_DMA
+ platform_data for a dma-pl330 device.
+
+ config PCH_DMA
+- tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223) DMA support"
++ tristate "Intel EG20T PCH / OKI Semi IOH(ML7213/ML7223/ML7831) DMA support"
+ depends on PCI && X86
+ select DMA_ENGINE
+ help
+ Enable support for Intel EG20T PCH DMA engine.
+-
+ This driver also can be used for OKI SEMICONDUCTOR IOH(Input/
+- Output Hub), ML7213 and ML7223.
+- ML7213 IOH is for IVI(In-Vehicle Infotainment) use and ML7223 IOH is
+- for MP(Media Phone) use.
+- ML7213/ML7223 is companion chip for Intel Atom E6xx series.
+- ML7213/ML7223 is completely compatible for Intel EG20T PCH.
++ Output Hub), ML7213, ML7223 and ML7831.
++ ML7213 IOH is for IVI(In-Vehicle Infotainment) use, ML7223 IOH is
++ for MP(Media Phone) use and ML7831 IOH is for general purpose use.
++ ML7213/ML7223/ML7831 is companion chip for Intel Atom E6xx series.
++ ML7213/ML7223/ML7831 is completely compatible for Intel EG20T PCH.
+
+ config IMX_SDMA
+ tristate "i.MX SDMA support"
+--- a/drivers/dma/pch_dma.c
++++ b/drivers/dma/pch_dma.c
+@@ -1018,6 +1018,8 @@ static void __devexit pch_dma_remove(str
+ #define PCI_DEVICE_ID_ML7223_DMA2_4CH 0x800E
+ #define PCI_DEVICE_ID_ML7223_DMA3_4CH 0x8017
+ #define PCI_DEVICE_ID_ML7223_DMA4_4CH 0x803B
++#define PCI_DEVICE_ID_ML7831_DMA1_8CH 0x8810
++#define PCI_DEVICE_ID_ML7831_DMA2_4CH 0x8815
+
+ DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table) = {
+ { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_EG20T_PCH_DMA_8CH), 8 },
+@@ -1030,6 +1032,8 @@ DEFINE_PCI_DEVICE_TABLE(pch_dma_id_table
+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA2_4CH), 4}, /* Video SPI */
+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA3_4CH), 4}, /* Security */
+ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7223_DMA4_4CH), 4}, /* FPGA */
++ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA1_8CH), 8}, /* UART */
++ { PCI_VDEVICE(ROHM, PCI_DEVICE_ID_ML7831_DMA2_4CH), 4}, /* SPI */
+ { 0, },
+ };
+
+@@ -1057,7 +1061,7 @@ static void __exit pch_dma_exit(void)
+ module_init(pch_dma_init);
+ module_exit(pch_dma_exit);
+
+-MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICONDUCTOR ML7213 IOH "
+- "DMA controller driver");
++MODULE_DESCRIPTION("Intel EG20T PCH / OKI SEMICON ML7213/ML7223/ML7831 IOH"
++ "DMA controller driver");
+ MODULE_AUTHOR("Yong Wang <yong.y.wang@intel.com>");
+ MODULE_LICENSE("GPL v2");
--- /dev/null
+From de3bd7e6de25141c466773c2e0fa319b2fa93655 Mon Sep 17 00:00:00 2001
+From: Danny Kukawka <danny.kukawka@bisect.de>
+Date: Tue, 14 Feb 2012 15:35:03 +0100
+Subject: spi-topcliff-pch: fix -Wuninitialized warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Danny Kukawka <danny.kukawka@bisect.de>
+
+commit de3bd7e6de25141c466773c2e0fa319b2fa93655 upstream.
+
+Fix for:
+drivers/spi/spi-topcliff-pch.c: In function ‘pch_spi_handler_sub’:
+drivers/spi/spi-topcliff-pch.c:325:17: warning: ‘bpw_len’ may be
+ used uninitialized in this function [-Wuninitialized]
+drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘rx_index’ may be
+ used uninitialized in this function [-Wuninitialized]
+drivers/spi/spi-topcliff-pch.c:325:42: warning: ‘tx_index’ may be
+ used uninitialized in this function [-Wuninitialized]
+
+Move usage of tx_index, rx_index and bpw_len into the same
+block as where they are set to prevent uninitialized usage.
+
+v2: instead of init variables with 0 move the whole block
+
+[This patch title "warnings" makes you think "This patch is not
+for bug fix". However, this patch surely patch for bug fix.]
+
+Signed-off-by: Danny Kukawka <danny.kukawka@bisect.de>
+Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
+Signed-off-by: Tomoya MORINAGA <tomoya.rohm@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/spi/spi-topcliff-pch.c | 31 ++++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
+
+--- a/drivers/spi/spi-topcliff-pch.c
++++ b/drivers/spi/spi-topcliff-pch.c
+@@ -315,22 +315,23 @@ static void pch_spi_handler_sub(struct p
+ data->tx_index = tx_index;
+ data->rx_index = rx_index;
+
+- }
+-
+- /* if transfer complete interrupt */
+- if (reg_spsr_val & SPSR_FI_BIT) {
+- if ((tx_index == bpw_len) && (rx_index == tx_index)) {
+- /* disable interrupts */
+- pch_spi_setclr_reg(data->master, PCH_SPCR, 0, PCH_ALL);
++ /* if transfer complete interrupt */
++ if (reg_spsr_val & SPSR_FI_BIT) {
++ if ((tx_index == bpw_len) && (rx_index == tx_index)) {
++ /* disable interrupts */
++ pch_spi_setclr_reg(data->master, PCH_SPCR, 0,
++ PCH_ALL);
+
+- /* transfer is completed;
+- inform pch_spi_process_messages */
+- data->transfer_complete = true;
+- data->transfer_active = false;
+- wake_up(&data->wait);
+- } else {
+- dev_err(&data->master->dev,
+- "%s : Transfer is not completed", __func__);
++ /* transfer is completed;
++ inform pch_spi_process_messages */
++ data->transfer_complete = true;
++ data->transfer_active = false;
++ wake_up(&data->wait);
++ } else {
++ dev_err(&data->master->dev,
++ "%s : Transfer is not completed",
++ __func__);
++ }
+ }
+ }
+ }