X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=drivers%2Fspi%2Fomap3_spi.c;h=766436ea5f9845bd3be4b5186df1d93c6ba0a5a2;hb=9cddf70ead79f7b7c113d7481860a14b61aa6e0b;hp=60e9d6e82552c8d18711a3667508d794545b880b;hpb=5f89a15e1630e9050c8b1b5307ccd800e4596ce5;p=u-boot diff --git a/drivers/spi/omap3_spi.c b/drivers/spi/omap3_spi.c index 60e9d6e825..766436ea5f 100644 --- a/drivers/spi/omap3_spi.c +++ b/drivers/spi/omap3_spi.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0+ /* * Copyright (C) 2016 Jagan Teki * Christophe Ricard @@ -13,8 +14,6 @@ * Copyright (C) 2005, 2006 Nokia Corporation * * Modified by Ruslan Araslanov - * - * SPDX-License-Identifier: GPL-2.0+ */ #include @@ -456,9 +455,6 @@ static void _omap3_spi_claim_bus(struct omap3_spi_priv *priv) conf |= OMAP3_MCSPI_MODULCTRL_SINGLE; writel(conf, &priv->regs->modulctrl); - - _omap3_spi_set_mode(priv); - _omap3_spi_set_speed(priv); } #ifndef CONFIG_DM_SPI @@ -548,7 +544,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, } if (max_hz > OMAP3_MCSPI_MAX_FREQ) { - printf("SPI error: unsupported frequency %i Hz. Max frequency is 48 Mhz\n", max_hz); + printf("SPI error: unsupported frequency %i Hz. Max frequency is 48 MHz\n", + max_hz); return NULL; } @@ -568,7 +565,8 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs, priv->freq = max_hz; priv->mode = mode; priv->wordlen = priv->slave.wordlen; -#ifdef CONFIG_OMAP3_SPI_D0_D1_SWAPPED +#if 0 + /* Please migrate to DM_SPI support for this feature. */ priv->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN; #endif @@ -592,8 +590,8 @@ static int omap3_spi_claim_bus(struct udevice *dev) struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev); priv->cs = slave_plat->cs; - priv->mode = slave_plat->mode; priv->freq = slave_plat->max_hz; + _omap3_spi_claim_bus(priv); return 0; @@ -627,14 +625,16 @@ static int omap3_spi_probe(struct udevice *dev) { struct omap3_spi_priv *priv = dev_get_priv(dev); const void *blob = gd->fdt_blob; - int node = dev->of_offset; + int node = dev_of_offset(dev); struct omap2_mcspi_platform_config* data = (struct omap2_mcspi_platform_config*)dev_get_driver_data(dev); - priv->regs = (struct mcspi *)(dev_get_addr(dev) + data->regs_offset); - priv->pin_dir = fdtdec_get_uint(blob, node, "ti,pindir-d0-out-d1-in", - MCSPI_PINDIR_D0_IN_D1_OUT); + priv->regs = (struct mcspi *)(devfdt_get_addr(dev) + data->regs_offset); + if (fdtdec_get_bool(blob, node, "ti,pindir-d0-out-d1-in")) + priv->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN; + else + priv->pin_dir = MCSPI_PINDIR_D0_IN_D1_OUT; priv->wordlen = SPI_DEFAULT_WORDLEN; return 0; } @@ -648,13 +648,25 @@ static int omap3_spi_xfer(struct udevice *dev, unsigned int bitlen, return _spi_xfer(priv, bitlen, dout, din, flags); } -static int omap3_spi_set_speed(struct udevice *bus, unsigned int speed) +static int omap3_spi_set_speed(struct udevice *dev, unsigned int speed) { + + struct omap3_spi_priv *priv = dev_get_priv(dev); + + priv->freq = speed; + _omap3_spi_set_speed(priv); + return 0; } -static int omap3_spi_set_mode(struct udevice *bus, uint mode) +static int omap3_spi_set_mode(struct udevice *dev, uint mode) { + struct omap3_spi_priv *priv = dev_get_priv(dev); + + priv->mode = mode; + + _omap3_spi_set_mode(priv); + return 0; } @@ -692,6 +704,5 @@ U_BOOT_DRIVER(omap3_spi) = { .probe = omap3_spi_probe, .ops = &omap3_spi_ops, .priv_auto_alloc_size = sizeof(struct omap3_spi_priv), - .probe = omap3_spi_probe, }; #endif