12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- From 6f1195d231ab576809fe2f4cff44a6e48cff2457 Mon Sep 17 00:00:00 2001
- From: Yutang Jiang <yutang.jiang@nxp.com>
- Date: Fri, 2 Sep 2016 22:00:16 +0800
- Subject: [PATCH 113/113] mtd: spi-nor: fsl-quad: move mtd_device_register to
- the last of probe
- After call mtd_device_register, the mtd devices should be workable immediately.
- If before finish all of init work call the mtd_device_register, it will not
- respond work request timely.
- For example, openwrt/lede have a AUTO split special flash partitions mechanism
- while mtd driver register. So, before call mtd_device_register, must let all of
- init work ready.
- Signed-off-by: Yutang Jiang <yutang.jiang@nxp.com>
- ---
- drivers/mtd/spi-nor/fsl-quadspi.c | 14 ++++++++++----
- 1 file changed, 10 insertions(+), 4 deletions(-)
- --- a/drivers/mtd/spi-nor/fsl-quadspi.c
- +++ b/drivers/mtd/spi-nor/fsl-quadspi.c
- @@ -1280,10 +1280,6 @@ static int fsl_qspi_probe(struct platfor
- if (ret)
- goto mutex_failed;
-
- - ret = mtd_device_register(mtd, NULL, 0);
- - if (ret)
- - goto mutex_failed;
- -
- /* Set the correct NOR size now. */
- if (q->nor_size == 0) {
- q->nor_size = mtd->size;
- @@ -1313,6 +1309,16 @@ static int fsl_qspi_probe(struct platfor
- goto last_init_failed;
-
- fsl_qspi_clk_disable_unprep(q);
- +
- + for (i = 0; i < q->nor_num; i++) {
- + /* skip the holes */
- + if (!q->has_second_chip)
- + i *= 2;
- +
- + ret = mtd_device_register(&q->nor[i].mtd, NULL, 0);
- + if (ret)
- + goto last_init_failed;
- + }
- return 0;
-
- last_init_failed:
|