mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
imx soc changes for 3.11:
* New SoCs i.MX6 Sololite and Vybrid VF610 support * imx5 and imx6 clock fixes and additions * Update clock driver to use of_clk_init() function * Refactor restart routine mxc_restart() to get it work for DT boot as well * Clean up mxc specific ulpi access ops * imx defconfig updates -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAABAgAGBQJRvsJmAAoJEFBXWFqHsHzOHOIH/jjVCaAFdOskPI4d9qPPAt9C 5o0aJDjerzTm+vH2mbec2507fChaYrLybAypJUj6wDYRf03RhAgPXorY83Y+3WtG SYz2UWza7MY8GeZv6e9tdrYS3JUSicFXPf8MsOcINsuyIub3dD96z36OqrnWZLFy uH5V81e4gOHECd4PWIxmhdjwawqmwb/Pqzl0V3+vXi2JM07xrn7/SqlZ7VfUwM2q DNhu5ugH7FtaFp75YrmTIhp6i+tovguRr0RIt6dnk/9gbJBQnV2Cw2MzdRPT12U5 bC79P7sojkKRtITcq9c1fnUNhkgc0+hS8HoezcQmzKMin6nFmVAh5wQFSlRJMJE= =mZw+ -----END PGP SIGNATURE----- Merge tag 'imx-soc-3.11' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/soc From Shawn Guo: imx soc changes for 3.11: * New SoCs i.MX6 Sololite and Vybrid VF610 support * imx5 and imx6 clock fixes and additions * Update clock driver to use of_clk_init() function * Refactor restart routine mxc_restart() to get it work for DT boot as well * Clean up mxc specific ulpi access ops * imx defconfig updates * tag 'imx-soc-3.11' of git://git.linaro.org/people/shawnguo/linux-2.6: (29 commits) ARM: imx_v6_v7_defconfig: Enable Vybrid VF610 ARM: imx_v6_v7_defconfig: Enable imx-wm8962 by default ARM: clk-imx6qdl: Add clko1 configuration for imx6qdl-sabresd ARM: imx_v6_v7_defconfig: Enable PWM and backlight options ARM: imx: Remove mxc specific ulpi access ops ARM: imx: add initial support for VF610 ARM: imx: add VF610 clock support ARM: imx_v6_v7_defconfig: enable parallel display ARM: imx: clk: No need to initialize phandle struct ARM: imx: irq-common: Include header to avoid sparse warning ARM: imx: Enable mx6 solo-lite support ARM: imx6: use common of_clk_init() call to initialize clocks ARM: imx6q: call of_clk_init() to register fixed rate clocks ARM: imx: imx_v6_v7_defconfig: Select CONFIG_DRM_IMX_TVE ARM: i.MX6: clk: add different DualLite MLB clock config ARM i.MX5: Add S/PDIF clocks ARM i.MX53: Add SATA clock ARM: imx6q: clk: add the eim_slow clock ARM: imx: remove MLB PLL from pllv3 ARM: imx: disable pll8_mlb in mx6q_clks ... Conflicts: arch/arm/Kconfig.debug (simple add/add conflict) Includes an update to 3.10-rc6 Signed-off-by: Arnd Bergmann <[email protected]>
This commit is contained in:
commit
e5051b8472
280 changed files with 4007 additions and 2087 deletions
|
|
@ -89,7 +89,7 @@ static int hspi_status_check_timeout(struct hspi_priv *hspi, u32 mask, u32 val)
|
|||
if ((mask & hspi_read(hspi, SPSR)) == val)
|
||||
return 0;
|
||||
|
||||
msleep(20);
|
||||
udelay(10);
|
||||
}
|
||||
|
||||
dev_err(hspi->dev, "timeout\n");
|
||||
|
|
|
|||
|
|
@ -1487,7 +1487,7 @@ static int pch_spi_pd_probe(struct platform_device *plat_dev)
|
|||
return 0;
|
||||
|
||||
err_spi_register_master:
|
||||
free_irq(board_dat->pdev->irq, board_dat);
|
||||
free_irq(board_dat->pdev->irq, data);
|
||||
err_request_irq:
|
||||
pch_spi_free_resources(board_dat, data);
|
||||
err_spi_get_resources:
|
||||
|
|
@ -1667,6 +1667,7 @@ static int pch_spi_probe(struct pci_dev *pdev,
|
|||
pd_dev = platform_device_alloc("pch-spi", i);
|
||||
if (!pd_dev) {
|
||||
dev_err(&pdev->dev, "platform_device_alloc failed\n");
|
||||
retval = -ENOMEM;
|
||||
goto err_platform_device;
|
||||
}
|
||||
pd_dev_save->pd_save[i] = pd_dev;
|
||||
|
|
|
|||
|
|
@ -267,7 +267,6 @@ static int xilinx_spi_txrx_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
{
|
||||
struct xilinx_spi *xspi = spi_master_get_devdata(spi->master);
|
||||
u32 ipif_ier;
|
||||
u16 cr;
|
||||
|
||||
/* We get here with transmitter inhibited */
|
||||
|
||||
|
|
@ -276,7 +275,6 @@ static int xilinx_spi_txrx_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
xspi->remaining_bytes = t->len;
|
||||
INIT_COMPLETION(xspi->done);
|
||||
|
||||
xilinx_spi_fill_tx_fifo(xspi);
|
||||
|
||||
/* Enable the transmit empty interrupt, which we use to determine
|
||||
* progress on the transmission.
|
||||
|
|
@ -285,12 +283,41 @@ static int xilinx_spi_txrx_bufs(struct spi_device *spi, struct spi_transfer *t)
|
|||
xspi->write_fn(ipif_ier | XSPI_INTR_TX_EMPTY,
|
||||
xspi->regs + XIPIF_V123B_IIER_OFFSET);
|
||||
|
||||
/* Start the transfer by not inhibiting the transmitter any longer */
|
||||
cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET) &
|
||||
~XSPI_CR_TRANS_INHIBIT;
|
||||
xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
|
||||
for (;;) {
|
||||
u16 cr;
|
||||
u8 sr;
|
||||
|
||||
wait_for_completion(&xspi->done);
|
||||
xilinx_spi_fill_tx_fifo(xspi);
|
||||
|
||||
/* Start the transfer by not inhibiting the transmitter any
|
||||
* longer
|
||||
*/
|
||||
cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET) &
|
||||
~XSPI_CR_TRANS_INHIBIT;
|
||||
xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
|
||||
|
||||
wait_for_completion(&xspi->done);
|
||||
|
||||
/* A transmit has just completed. Process received data and
|
||||
* check for more data to transmit. Always inhibit the
|
||||
* transmitter while the Isr refills the transmit register/FIFO,
|
||||
* or make sure it is stopped if we're done.
|
||||
*/
|
||||
cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET);
|
||||
xspi->write_fn(cr | XSPI_CR_TRANS_INHIBIT,
|
||||
xspi->regs + XSPI_CR_OFFSET);
|
||||
|
||||
/* Read out all the data from the Rx FIFO */
|
||||
sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
|
||||
while ((sr & XSPI_SR_RX_EMPTY_MASK) == 0) {
|
||||
xspi->rx_fn(xspi);
|
||||
sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
|
||||
}
|
||||
|
||||
/* See if there is more data to send */
|
||||
if (!xspi->remaining_bytes > 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Disable the transmit empty interrupt */
|
||||
xspi->write_fn(ipif_ier, xspi->regs + XIPIF_V123B_IIER_OFFSET);
|
||||
|
|
@ -314,38 +341,7 @@ static irqreturn_t xilinx_spi_irq(int irq, void *dev_id)
|
|||
xspi->write_fn(ipif_isr, xspi->regs + XIPIF_V123B_IISR_OFFSET);
|
||||
|
||||
if (ipif_isr & XSPI_INTR_TX_EMPTY) { /* Transmission completed */
|
||||
u16 cr;
|
||||
u8 sr;
|
||||
|
||||
/* A transmit has just completed. Process received data and
|
||||
* check for more data to transmit. Always inhibit the
|
||||
* transmitter while the Isr refills the transmit register/FIFO,
|
||||
* or make sure it is stopped if we're done.
|
||||
*/
|
||||
cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET);
|
||||
xspi->write_fn(cr | XSPI_CR_TRANS_INHIBIT,
|
||||
xspi->regs + XSPI_CR_OFFSET);
|
||||
|
||||
/* Read out all the data from the Rx FIFO */
|
||||
sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
|
||||
while ((sr & XSPI_SR_RX_EMPTY_MASK) == 0) {
|
||||
xspi->rx_fn(xspi);
|
||||
sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
|
||||
}
|
||||
|
||||
/* See if there is more data to send */
|
||||
if (xspi->remaining_bytes > 0) {
|
||||
xilinx_spi_fill_tx_fifo(xspi);
|
||||
/* Start the transfer by not inhibiting the
|
||||
* transmitter any longer
|
||||
*/
|
||||
xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
|
||||
} else {
|
||||
/* No more data to send.
|
||||
* Indicate the transfer is completed.
|
||||
*/
|
||||
complete(&xspi->done);
|
||||
}
|
||||
complete(&xspi->done);
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
|
|
|||
Loading…
Reference in a new issue