diff options
Diffstat (limited to 'drivers/spi')
| -rw-r--r-- | drivers/spi/mtk_spim.c | 7 | ||||
| -rw-r--r-- | drivers/spi/nxp_fspi.c | 7 | 
2 files changed, 11 insertions, 3 deletions
| diff --git a/drivers/spi/mtk_spim.c b/drivers/spi/mtk_spim.c index 418e586b91d..90f4c3cecb9 100644 --- a/drivers/spi/mtk_spim.c +++ b/drivers/spi/mtk_spim.c @@ -409,7 +409,7 @@ static int mtk_spim_transfer_wait(struct spi_slave *slave,  {  	struct udevice *bus = dev_get_parent(slave->dev);  	struct mtk_spim_priv *priv = dev_get_priv(bus); -	u32 sck_l, sck_h, clk_count, reg; +	u32 pll_clk, sck_l, sck_h, clk_count, reg;  	ulong us = 1;  	int ret = 0; @@ -418,11 +418,12 @@ static int mtk_spim_transfer_wait(struct spi_slave *slave,  	else  		clk_count = op->data.nbytes; +	pll_clk = priv->pll_clk_rate;  	sck_l = readl(priv->base + SPI_CFG2_REG) >> SPI_CFG2_SCK_LOW_OFFSET;  	sck_h = readl(priv->base + SPI_CFG2_REG) & SPI_CFG2_SCK_HIGH_MASK; -	do_div(priv->pll_clk_rate, sck_l + sck_h + 2); +	do_div(pll_clk, sck_l + sck_h + 2); -	us = CLK_TO_US(priv->pll_clk_rate, clk_count * 8); +	us = CLK_TO_US(pll_clk, clk_count * 8);  	us += 1000 * 1000; /* 1s tolerance */  	if (us > UINT_MAX) diff --git a/drivers/spi/nxp_fspi.c b/drivers/spi/nxp_fspi.c index 579d6bac9b1..5db27f9ae2c 100644 --- a/drivers/spi/nxp_fspi.c +++ b/drivers/spi/nxp_fspi.c @@ -927,6 +927,13 @@ static int nxp_fspi_default_setup(struct nxp_fspi *f)  	fspi_writel(f, FSPI_AHBCR_PREF_EN | FSPI_AHBCR_RDADDROPT,  		    base + FSPI_AHBCR); +	/* Reset the flashx control1 registers */ +	reg = FSPI_FLSHXCR1_TCSH(0x3) | FSPI_FLSHXCR1_TCSS(0x3); +	fspi_writel(f, reg, base + FSPI_FLSHA1CR1); +	fspi_writel(f, reg, base + FSPI_FLSHA2CR1); +	fspi_writel(f, reg, base + FSPI_FLSHB1CR1); +	fspi_writel(f, reg, base + FSPI_FLSHB2CR1); +  	/* AHB Read - Set lut sequence ID for all CS. */  	fspi_writel(f, SEQID_LUT, base + FSPI_FLSHA1CR2);  	fspi_writel(f, SEQID_LUT, base + FSPI_FLSHA2CR2); | 
