diff options
Diffstat (limited to 'drivers/spi/spi-mt65xx.c')
-rw-r--r-- | drivers/spi/spi-mt65xx.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 3dc31627c655..0cce6f0ba824 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c @@ -120,6 +120,12 @@ static const struct mtk_spi_compatible mt8173_compat = { .must_tx = true, }; +static const struct mtk_spi_compatible mt8183_compat = { + .need_pad_sel = true, + .must_tx = true, + .enhance_timing = true, +}; + /* * A piece of default chip info unless the platform * supplies it. @@ -144,12 +150,18 @@ static const struct of_device_id mtk_spi_of_match[] = { { .compatible = "mediatek,mt7622-spi", .data = (void *)&mt7622_compat, }, + { .compatible = "mediatek,mt7629-spi", + .data = (void *)&mt7622_compat, + }, { .compatible = "mediatek,mt8135-spi", .data = (void *)&mtk_common_compat, }, { .compatible = "mediatek,mt8173-spi", .data = (void *)&mt8173_compat, }, + { .compatible = "mediatek,mt8183-spi", + .data = (void *)&mt8183_compat, + }, {} }; MODULE_DEVICE_TABLE(of, mtk_spi_of_match); @@ -522,11 +534,11 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, len); mtk_spi_setup_packet(master); - cnt = len / 4; + cnt = mdata->xfer_len / 4; iowrite32_rep(mdata->base + SPI_TX_DATA_REG, trans->tx_buf + mdata->num_xfered, cnt); - remainder = len % 4; + remainder = mdata->xfer_len % 4; if (remainder > 0) { reg_val = 0; memcpy(®_val, |