Re: [U-Boot] [PATCH 4/5] x86: ich-spi: Move opcode registers configuration to another routine

2017-08-23 Thread Bin Meng
On Wed, Aug 16, 2017 at 2:19 PM, Stefan Roese  wrote:
> On 16.08.2017 07:38, Bin Meng wrote:
>>
>> At present the ICH SPI opcode registers configuration is done in the
>> ich_spi_remove() routine, a little bit weird but that's how current.
>> Linux MTD driver works. This changes to move the opcode registers
>> configuration to a separate routine ich_spi_config_opcode() which
>> might be called by U-Boot itself as well.
>>
>> Signed-off-by: Bin Meng 
>> ---
>>
>>   drivers/spi/ich.c | 22 --
>>   1 file changed, 16 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
>> index d4888f5..373bc26 100644
>> --- a/drivers/spi/ich.c
>> +++ b/drivers/spi/ich.c
>> @@ -338,6 +338,21 @@ static int ich_status_poll(struct ich_spi_priv *ctlr,
>> u16 bitmask,
>> return -ETIMEDOUT;
>>   }
>>   +void ich_spi_config_opcode(struct udevice *dev)
>> +{
>> +   struct ich_spi_priv *ctlr = dev_get_priv(dev);
>> +
>> +   /*
>> +* PREOP, OPTYPE, OPMENU1/OPMENU2 registers can be locked down
>> +* to prevent accidental or intentional writes. Before they get
>> +* locked down, these registers should be initialized properly.
>> +*/
>> +   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
>> +   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
>> +   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
>> +   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
>> +}
>> +
>>   static int ich_spi_xfer(struct udevice *dev, unsigned int bitlen,
>> const void *dout, void *din, unsigned long flags)
>>   {
>> @@ -585,16 +600,11 @@ static int ich_spi_probe(struct udevice *dev)
>> static int ich_spi_remove(struct udevice *bus)
>>   {
>> -   struct ich_spi_priv *ctlr = dev_get_priv(bus);
>> -
>> /*
>>  * Configure SPI controller so that the Linux MTD driver can fully
>>  * access the SPI NOR chip
>>  */
>> -   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
>> -   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
>> -   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
>> -   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
>> +   ich_spi_config_opcode(bus);
>> return 0;
>>   }
>>
>
> Reviewed-by: Stefan Roese 

applied to u-boot-x86, thanks!
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


Re: [U-Boot] [PATCH 4/5] x86: ich-spi: Move opcode registers configuration to another routine

2017-08-16 Thread Stefan Roese

On 16.08.2017 07:38, Bin Meng wrote:

At present the ICH SPI opcode registers configuration is done in the
ich_spi_remove() routine, a little bit weird but that's how current.
Linux MTD driver works. This changes to move the opcode registers
configuration to a separate routine ich_spi_config_opcode() which
might be called by U-Boot itself as well.

Signed-off-by: Bin Meng 
---

  drivers/spi/ich.c | 22 --
  1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index d4888f5..373bc26 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -338,6 +338,21 @@ static int ich_status_poll(struct ich_spi_priv *ctlr, u16 
bitmask,
return -ETIMEDOUT;
  }
  
+void ich_spi_config_opcode(struct udevice *dev)

+{
+   struct ich_spi_priv *ctlr = dev_get_priv(dev);
+
+   /*
+* PREOP, OPTYPE, OPMENU1/OPMENU2 registers can be locked down
+* to prevent accidental or intentional writes. Before they get
+* locked down, these registers should be initialized properly.
+*/
+   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
+   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
+   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
+   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
+}
+
  static int ich_spi_xfer(struct udevice *dev, unsigned int bitlen,
const void *dout, void *din, unsigned long flags)
  {
@@ -585,16 +600,11 @@ static int ich_spi_probe(struct udevice *dev)
  
  static int ich_spi_remove(struct udevice *bus)

  {
-   struct ich_spi_priv *ctlr = dev_get_priv(bus);
-
/*
 * Configure SPI controller so that the Linux MTD driver can fully
 * access the SPI NOR chip
 */
-   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
-   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
-   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
-   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
+   ich_spi_config_opcode(bus);
  
  	return 0;

  }



Reviewed-by: Stefan Roese 

Thanks,
Stefan
___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot


[U-Boot] [PATCH 4/5] x86: ich-spi: Move opcode registers configuration to another routine

2017-08-15 Thread Bin Meng
At present the ICH SPI opcode registers configuration is done in the
ich_spi_remove() routine, a little bit weird but that's how current.
Linux MTD driver works. This changes to move the opcode registers
configuration to a separate routine ich_spi_config_opcode() which
might be called by U-Boot itself as well.

Signed-off-by: Bin Meng 
---

 drivers/spi/ich.c | 22 --
 1 file changed, 16 insertions(+), 6 deletions(-)

diff --git a/drivers/spi/ich.c b/drivers/spi/ich.c
index d4888f5..373bc26 100644
--- a/drivers/spi/ich.c
+++ b/drivers/spi/ich.c
@@ -338,6 +338,21 @@ static int ich_status_poll(struct ich_spi_priv *ctlr, u16 
bitmask,
return -ETIMEDOUT;
 }
 
+void ich_spi_config_opcode(struct udevice *dev)
+{
+   struct ich_spi_priv *ctlr = dev_get_priv(dev);
+
+   /*
+* PREOP, OPTYPE, OPMENU1/OPMENU2 registers can be locked down
+* to prevent accidental or intentional writes. Before they get
+* locked down, these registers should be initialized properly.
+*/
+   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
+   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
+   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
+   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
+}
+
 static int ich_spi_xfer(struct udevice *dev, unsigned int bitlen,
const void *dout, void *din, unsigned long flags)
 {
@@ -585,16 +600,11 @@ static int ich_spi_probe(struct udevice *dev)
 
 static int ich_spi_remove(struct udevice *bus)
 {
-   struct ich_spi_priv *ctlr = dev_get_priv(bus);
-
/*
 * Configure SPI controller so that the Linux MTD driver can fully
 * access the SPI NOR chip
 */
-   ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
-   ich_writew(ctlr, SPI_OPTYPE, ctlr->optype);
-   ich_writel(ctlr, SPI_OPMENU_LOWER, ctlr->opmenu);
-   ich_writel(ctlr, SPI_OPMENU_UPPER, ctlr->opmenu + sizeof(u32));
+   ich_spi_config_opcode(bus);
 
return 0;
 }
-- 
2.9.2

___
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot