@ -35,6 +35,12 @@ DECLARE_GLOBAL_DATA_PTR;
# define OMAP3_MCSPI4_BASE 0x480BA000
# define OMAP3_MCSPI4_BASE 0x480BA000
# endif
# endif
# define OMAP4_MCSPI_REG_OFFSET 0x100
struct omap2_mcspi_platform_config {
unsigned int regs_offset ;
} ;
/* per-register bitmasks */
/* per-register bitmasks */
# define OMAP3_MCSPI_SYSCONFIG_SMARTIDLE (2 << 3)
# define OMAP3_MCSPI_SYSCONFIG_SMARTIDLE (2 << 3)
# define OMAP3_MCSPI_SYSCONFIG_ENAWAKEUP BIT(2)
# define OMAP3_MCSPI_SYSCONFIG_ENAWAKEUP BIT(2)
@ -623,7 +629,10 @@ static int omap3_spi_probe(struct udevice *dev)
const void * blob = gd - > fdt_blob ;
const void * blob = gd - > fdt_blob ;
int node = dev - > of_offset ;
int node = dev - > of_offset ;
priv - > regs = ( struct mcspi * ) dev_get_addr ( 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 " ,
priv - > pin_dir = fdtdec_get_uint ( blob , node , " ti,pindir-d0-out-d1-in " ,
MCSPI_PINDIR_D0_IN_D1_OUT ) ;
MCSPI_PINDIR_D0_IN_D1_OUT ) ;
priv - > wordlen = SPI_DEFAULT_WORDLEN ;
priv - > wordlen = SPI_DEFAULT_WORDLEN ;
@ -662,9 +671,17 @@ static const struct dm_spi_ops omap3_spi_ops = {
*/
*/
} ;
} ;
static struct omap2_mcspi_platform_config omap2_pdata = {
. regs_offset = 0 ,
} ;
static struct omap2_mcspi_platform_config omap4_pdata = {
. regs_offset = OMAP4_MCSPI_REG_OFFSET ,
} ;
static const struct udevice_id omap3_spi_ids [ ] = {
static const struct udevice_id omap3_spi_ids [ ] = {
{ . compatible = " ti,omap2-mcspi " } ,
{ . compatible = " ti,omap2-mcspi " , . data = ( ulong ) & omap2_pdata } ,
{ . compatible = " ti,omap4-mcspi " } ,
{ . compatible = " ti,omap4-mcspi " , . data = ( ulong ) & omap4_pdata } ,
{ }
{ }
} ;
} ;