<div dir="ltr">Thanks for this patch, this seems workable for us. Will test it out.<div><br></div><div>Regards,</div><div>Shakeeb</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jan 15, 2021 at 4:38 PM Konstantin Klubnichkin <<a href="mailto:kitsok@yandex-team.ru">kitsok@yandex-team.ru</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>Hello!</div><div>Yes.</div><div>I've patched SMC driver to not de-instantiate what it created if faulty flash is detected.</div><div>With this patch the driver loads with error and then, when I need to access SPI flash, I just de-instantiate/instantiate flash device via sysfs like this:</div><div><div><div> </div><div>SPI_DEV="1e630000.spi"</div><div>SPI_PATH="/sys/bus/platform/drivers/aspeed-smc"</div></div><div>echo $SPI_DEV > $SPI_PATH/unbind # Unbind device</div><div><div>echo $SPI_DEV > $SPI_PATH/bind # Bind device</div></div></div><div> </div><div>Here is the patch</div><div>======================================================================================</div><div><div>diff --git a/drivers/mtd/spi-nor/controllers/aspeed-smc.c b/drivers/mtd/spi-nor/controllers/aspeed-smc.c</div><div>index 0805dca..40a9c5c 100644</div><div>--- a/drivers/mtd/spi-nor/controllers/aspeed-smc.c</div><div>+++ b/drivers/mtd/spi-nor/controllers/aspeed-smc.c</div><div>@@ -1321,8 +1321,11 @@ static int aspeed_smc_setup_flash(struct aspeed_smc_controller *controller,</div><div>}</div><div> </div><div>if (ret) {</div><div>- of_node_put(child);</div><div>- aspeed_smc_unregister(controller);</div><div>+ /* As it's the controller we're flying on, it doesn't make sense to unregister in case of errors:</div><div>+ If we don't have flash with rootfs - we'll die in kernel panic due to missing rootfs.</div><div>+ If BMC chip is OK and others are missing - it's fine, we can continue.</div><div>+ */</div><div>+ return 0;</div><div>}</div><div> </div><div>return ret;</div><div>--</div><div>2.7.4</div><div><div>======================================================================================</div><div> </div><div> </div></div><div> </div></div><div> </div><div>15.01.2021, 13:43, "Shakeeb B K" <<a href="mailto:shakeebbk@gmail.com" target="_blank">shakeebbk@gmail.com</a>>:</div><blockquote><div>Hi All,<div> </div><div>We have a use case for dynamic enabling/disabling access to spi nor flash using an external mux.</div><div>This is mainly for data flash access over spi controller. </div><div> </div><div>Since we use aspeed-smc driver for both fmc and smc, we cannot make it loadable as of now.</div><div>Is there any way to handle this other than writing a new implementation for spi controller?</div><div> </div><div>Thanks,</div><div>Shakeeb</div></div></blockquote><div> </div><div> </div><div>-- </div><div>Best regards,</div><div>Konstantin Klubnichkin,</div><div>lead firmware engineer,</div><div>server hardware R&D group,</div><div>Yandex Moscow office.</div><div>tel: +7-903-510-33-33</div><div> </div></blockquote></div>