mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-20 22:21:41 +00:00
x86: ich-spi: Move opcode registers configuration to another routine
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 <bmeng.cn@gmail.com> Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
3e79141684
commit
b42711f90c
1 changed files with 16 additions and 6 deletions
|
@ -338,6 +338,21 @@ static int ich_status_poll(struct ich_spi_priv *ctlr, u16 bitmask,
|
||||||
return -ETIMEDOUT;
|
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,
|
static int ich_spi_xfer(struct udevice *dev, unsigned int bitlen,
|
||||||
const void *dout, void *din, unsigned long flags)
|
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)
|
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
|
* Configure SPI controller so that the Linux MTD driver can fully
|
||||||
* access the SPI NOR chip
|
* access the SPI NOR chip
|
||||||
*/
|
*/
|
||||||
ich_writew(ctlr, SPI_OPPREFIX, ctlr->preop);
|
ich_spi_config_opcode(bus);
|
||||||
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));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue