public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Stefan Roese <sr@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 06/26] spi: mt7621-spi: restore default register value after each xfer
Date: Wed, 28 Aug 2019 10:01:03 +0200	[thread overview]
Message-ID: <bafb91eb-fa8c-e22e-a5bd-28feef4b7974@denx.de> (raw)
In-Reply-To: <1566974291-11750-7-git-send-email-weijie.gao@mediatek.com>

On 28.08.19 08:37, Weijie Gao wrote:
> Currently this driver uses a different way to implement the spi xfer,
> by modifying some fields of two registers, which is incompatible with the
> MTK's original SDK linux driver. This will cause the flash data being
> damaged by the SDK driver.
> 
> This patch lets the mt7621_spi_set_cs() restore the original register
> fields after cs deactivated.

What is this "MTK's original SDK Linux driver"? It's not the mainline
Linux SPI driver, correct? Which platforms / boards are using it?

Please note that in general, drivers in Linux should not make any
assumptions about prior register setup. So the driver you are referring
to should configure all registers correctly for its setup.

But I don't object to this patch, so if this is really needed for
some of your customers, please go ahead:

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan
  
> Signed-off-by: Weijie Gao <weijie.gao@mediatek.com>
> ---
>   drivers/spi/mt7621_spi.c | 30 +++++++++++++++++-------------
>   1 file changed, 17 insertions(+), 13 deletions(-)
> 
> diff --git a/drivers/spi/mt7621_spi.c b/drivers/spi/mt7621_spi.c
> index 20fe93d416..06484e7abe 100644
> --- a/drivers/spi/mt7621_spi.c
> +++ b/drivers/spi/mt7621_spi.c
> @@ -20,6 +20,10 @@
>   #define MT7621_SPI_TRANS	0x00
>   #define MT7621_SPI_TRANS_START	BIT(8)
>   #define MT7621_SPI_TRANS_BUSY	BIT(16)
> +#define TRANS_ADDR_SZ		GENMASK(20, 19)
> +#define TRANS_ADDR_SZ_SHIFT	19
> +#define TRANS_MOSI_BCNT		GENMASK(3, 0)
> +#define TRANS_MOSI_BCNT_SHIFT	0
>   
>   #define MT7621_SPI_OPCODE	0x04
>   #define MT7621_SPI_DATA0	0x08
> @@ -49,20 +53,22 @@ struct mt7621_spi {
>   	unsigned int sys_freq;
>   };
>   
> -static void mt7621_spi_reset(struct mt7621_spi *rs, int duplex)
> -{
> -	setbits_le32(rs->base + MT7621_SPI_MASTER,
> -		     MASTER_RS_SLAVE_SEL | MASTER_MORE_BUFMODE);
> -}
> -
>   static void mt7621_spi_set_cs(struct mt7621_spi *rs, int cs, int enable)
>   {
> -	u32 val = 0;
> -
>   	debug("%s: cs#%d -> %s\n", __func__, cs, enable ? "enable" : "disable");
> -	if (enable)
> -		val = BIT(cs);
> -	iowrite32(val, rs->base + MT7621_SPI_POLAR);
> +
> +	if (enable) {
> +		setbits_le32(rs->base + MT7621_SPI_MASTER,
> +			     MASTER_RS_SLAVE_SEL | MASTER_MORE_BUFMODE);
> +		iowrite32(BIT(cs), rs->base + MT7621_SPI_POLAR);
> +	} else {
> +		iowrite32(0, rs->base + MT7621_SPI_POLAR);
> +		iowrite32((2 << TRANS_ADDR_SZ_SHIFT) |
> +			  (1 << TRANS_MOSI_BCNT_SHIFT),
> +			  rs->base + MT7621_SPI_TRANS);
> +		clrbits_le32(rs->base + MT7621_SPI_MASTER,
> +			     MASTER_RS_SLAVE_SEL | MASTER_MORE_BUFMODE);
> +	}
>   }
>   
>   static int mt7621_spi_set_mode(struct udevice *bus, uint mode)
> @@ -267,8 +273,6 @@ static int mt7621_spi_probe(struct udevice *dev)
>   		return -EINVAL;
>   	}
>   
> -	mt7621_spi_reset(rs, 0);
> -
>   	return 0;
>   }
>   
> 

Viele Grüße,
Stefan

-- 
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: sr at denx.de

  reply	other threads:[~2019-08-28  8:01 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-28  6:37 [U-Boot] [PATCH 00/26] Add and update drivers for MediaTek MT76x8 SoCs Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 01/26] serial: serial_mtk: enable FIFO and disable flow control Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 02/26] serial: serial_mtk: add non-DM version for SPL Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 03/26] dts: mtmips: move uart property clock-frequency into mt7628an.dtsi Weijie Gao
2019-08-28  7:13   ` Stefan Roese
2019-08-28  6:37 ` [U-Boot] [PATCH 04/26] dts: mtmips: enable high-speed UART support for mt7628 Weijie Gao
2019-08-28  7:14   ` Stefan Roese
2019-08-28  6:37 ` [U-Boot] [PATCH 05/26] spi: mt7621-spi: remove data cache and rewrite its xfer function Weijie Gao
2019-08-28  7:55   ` Stefan Roese
2019-08-28  6:37 ` [U-Boot] [PATCH 06/26] spi: mt7621-spi: restore default register value after each xfer Weijie Gao
2019-08-28  8:01   ` Stefan Roese [this message]
2019-08-28  6:37 ` [U-Boot] [PATCH 07/26] pinctrl: add support for MediaTek MT7628 Weijie Gao
2019-08-28 12:26   ` Stefan Roese
2019-08-28 12:37     ` Stefan Roese
2019-08-29  3:04       ` Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 08/26] dts: mtmips: add pinctrl node for mt7628 Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 09/26] dts: mtmips: add default pinctrl for uart nodes Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 10/26] reset: add reset controller driver for MediaTek MIPS platform Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 11/26] dts: mtmips: update reset controller node for mt7628 Weijie Gao
2019-08-28 13:18   ` Stefan Roese
2019-08-29  3:18     ` Weijie Gao
2019-12-30  9:19   ` Mauro Condarelli
2019-12-30 10:22     ` Daniel Schwierzeck
2019-12-30 11:09       ` Mauro Condarelli
2019-12-30 12:14       ` Mauro Condarelli
2020-01-02 12:30         ` Stefan Roese
2020-01-02 13:36           ` Mauro Condarelli
2019-08-28  6:37 ` [U-Boot] [PATCH 12/26] clk: add clock gating driver for MediaTek MIPS platform Weijie Gao
2019-08-28 13:24   ` Daniel Schwierzeck
2019-08-29  3:25     ` Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 13/26] dts: mtmips: add gate clock node for mt7628 Weijie Gao
2019-08-28  6:37 ` [U-Boot] [PATCH 14/26] phy: mt76x8-usb-phy: add slew rate calibration and remove non-mt7628 part Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 15/26] net: mt7628-eth: remove hardcoded gpio settings and regmap-based phy reset Weijie Gao
2019-08-28 13:32   ` Stefan Roese
2019-08-28  6:38 ` [U-Boot] [PATCH 16/26] net: mt7628-eth: remove phy link up detection Weijie Gao
2019-08-28 13:37   ` Stefan Roese
2019-08-29  3:32     ` Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 17/26] net: mt7628-eth: free rx descriptor on receiving failure Weijie Gao
2019-08-28 13:42   ` Stefan Roese
2019-08-28  6:38 ` [U-Boot] [PATCH 18/26] net: mt7628-eth: add support to isolate LAN/WAN ports Weijie Gao
2019-08-28 13:46   ` Stefan Roese
2019-08-29  4:27     ` Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 19/26] dts: mtmips: enable eth port0 led function for all boards Weijie Gao
2019-08-28 13:47   ` Stefan Roese
2019-08-28  6:38 ` [U-Boot] [PATCH 20/26] mmc: mtk-sd: add support for MediaTek MT7620/MT7628 SoCs Weijie Gao
2019-08-28 13:50   ` Stefan Roese
2019-08-29  4:28     ` Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 21/26] mmc: mtk-sd: add a dts property cd-active-high for builtin-cd mode Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 22/26] dts: mtmips: add mmc related nodes for mt7628an.dtsi Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 23/26] dts: mtmips: add default pinctrl for gardena-smart-gateway-mt7688 Weijie Gao
2019-08-28 13:52   ` Stefan Roese
2019-08-28  6:38 ` [U-Boot] [PATCH 24/26] dts: mtmips: add default pinctrl to eth nodes for all boards Weijie Gao
2019-08-28 13:55   ` Stefan Roese
2019-08-28  6:38 ` [U-Boot] [PATCH 25/26] configs: mtmips: change all boards to use mtk high-speed uart driver Weijie Gao
2019-08-28 13:57   ` Stefan Roese
2019-08-29  4:30     ` Weijie Gao
2019-08-28  6:38 ` [U-Boot] [PATCH 26/26] configs: mtmips: add necessary drivers for mtmips boards Weijie Gao
2019-08-28 13:35   ` Daniel Schwierzeck
2019-08-28 13:40     ` Stefan Roese
2019-08-29  3:34       ` Weijie Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bafb91eb-fa8c-e22e-a5bd-28feef4b7974@denx.de \
    --to=sr@denx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox