[PATCH linux dev-4.7 8/8] mtd: spi-nor: aspeed: use command mode for reads
Cédric Le Goater
clg at kaod.org
Mon Nov 7 16:54:39 AEDT 2016
On 11/07/2016 03:32 AM, Joel Stanley wrote:
> On Sat, Nov 5, 2016 at 3:30 AM, Cédric Le Goater <clg at kaod.org> wrote:
>> When accessing flash contents, let use the "command mode" for read.
>>
>> Signed-off-by: Cédric Le Goater <clg at kaod.org>
>> ---
>> drivers/mtd/spi-nor/aspeed-smc.c | 15 ++++++++-------
>> 1 file changed, 8 insertions(+), 7 deletions(-)
>>
>> diff --git a/drivers/mtd/spi-nor/aspeed-smc.c b/drivers/mtd/spi-nor/aspeed-smc.c
>> index 88cbfe7c4340..89085d84b4b5 100644
>> --- a/drivers/mtd/spi-nor/aspeed-smc.c
>> +++ b/drivers/mtd/spi-nor/aspeed-smc.c
>> @@ -522,8 +522,8 @@ static void aspeed_smc_send_cmd_addr(struct spi_nor *nor, u8 cmd, u32 addr)
>> }
>> }
>>
>> -static int aspeed_smc_read_user(struct spi_nor *nor, loff_t from, size_t len,
>> - size_t *retlen, u_char *read_buf)
>> +static int aspeed_smc_read(struct spi_nor *nor, loff_t from, size_t len,
>> + size_t *retlen, u_char *read_buf)
>> {
>> struct aspeed_smc_chip *chip = nor->priv;
>> int ret;
>> @@ -542,10 +542,10 @@ static int aspeed_smc_read_user(struct spi_nor *nor, loff_t from, size_t len,
>> dev_err(chip->nor.dev, "DMA read failed: %d", ret);
>> }
>>
>> - aspeed_smc_start_user(nor);
>> - aspeed_smc_send_cmd_addr(nor, nor->read_opcode, from);
>> - aspeed_smc_from_ahb(read_buf, chip->base, len);
>> - aspeed_smc_stop_user(nor);
>> + /*
>> + * we are in read or fread mode by default
>> + */
>> + aspeed_smc_from_ahb(read_buf, chip->base + from, len);
>
> Even though I just acked the previous patch, when reading this it's
> not clear that we're doing a read. Perhaps
> smc_{read_from,write_to}_ahb?
yes. I agree.
Thanks,
C.
> Cheers,
>
> Joel
>
>>
>> out:
>> mutex_unlock(&chip->controller->mutex);
>> @@ -861,6 +861,7 @@ static int aspeed_smc_chip_setup_finish(struct aspeed_smc_chip *chip)
>> }
>>
>> chip->ctl_val[smc_read] |= cmd |
>> + spi_control_fill_opcode(chip->nor.read_opcode) |
>> CONTROL_SPI_IO_DUMMY_CYCLES_SET(chip->nor.read_dummy / 8);
>>
>> dev_dbg(controller->dev, "base control register: %08x\n",
>> @@ -956,7 +957,7 @@ static int aspeed_smc_probe(struct platform_device *pdev)
>> chip->nor.priv = chip;
>> spi_nor_set_flash_node(&chip->nor, child);
>> chip->nor.mtd.name = of_get_property(child, "label", NULL);
>> - chip->nor.read = aspeed_smc_read_user;
>> + chip->nor.read = aspeed_smc_read;
>> chip->nor.write = aspeed_smc_write_user;
>> chip->nor.read_reg = aspeed_smc_read_reg;
>> chip->nor.write_reg = aspeed_smc_write_reg;
>> --
>> 2.7.4
>>
More information about the openbmc
mailing list