.. | .. |
---|
510 | 510 | const struct nand_page_io_req *req, |
---|
511 | 511 | bool ecc_enabled) |
---|
512 | 512 | { |
---|
513 | | - u8 status; |
---|
| 513 | + u8 status = 0; |
---|
514 | 514 | int ret; |
---|
515 | 515 | |
---|
516 | 516 | ret = spinand_load_page_op(spinand, req); |
---|
.. | .. |
---|
518 | 518 | return ret; |
---|
519 | 519 | |
---|
520 | 520 | ret = spinand_wait(spinand, &status); |
---|
| 521 | + /* |
---|
| 522 | + * When there is data outside of OIP in the status, the status data is |
---|
| 523 | + * inaccurate and needs to be reconfirmed |
---|
| 524 | + */ |
---|
| 525 | + if (spinand->id.data[0] == 0x01 && status && !ret) |
---|
| 526 | + ret = spinand_wait(spinand, &status); |
---|
521 | 527 | if (ret < 0) |
---|
522 | 528 | return ret; |
---|
523 | 529 | |
---|
.. | .. |
---|
837 | 843 | #ifdef CONFIG_SPI_NAND_ESMT |
---|
838 | 844 | &esmt_spinand_manufacturer, |
---|
839 | 845 | #endif |
---|
| 846 | +#ifdef CONFIG_SPI_NAND_XINCUN |
---|
| 847 | + &xincun_spinand_manufacturer, |
---|
| 848 | +#endif |
---|
840 | 849 | #ifdef CONFIG_SPI_NAND_XTX |
---|
841 | 850 | &xtx_spinand_manufacturer, |
---|
842 | 851 | #endif |
---|
.. | .. |
---|
867 | 876 | #ifdef CONFIG_SPI_NAND_SKYHIGH |
---|
868 | 877 | &skyhigh_spinand_manufacturer, |
---|
869 | 878 | #endif |
---|
| 879 | +#ifdef CONFIG_SPI_NAND_GSTO |
---|
| 880 | + &gsto_spinand_manufacturer, |
---|
| 881 | +#endif |
---|
870 | 882 | }; |
---|
871 | 883 | |
---|
872 | 884 | static int spinand_manufacturer_match(struct spinand_device *spinand, |
---|