Loading drivers/soc/qcom/peripheral-loader.c +9 −2 Original line number Original line Diff line number Diff line Loading @@ -653,6 +653,9 @@ int pil_boot(struct pil_desc *desc) const struct firmware *fw; const struct firmware *fw; struct pil_priv *priv = desc->priv; struct pil_priv *priv = desc->priv; if (desc->shutdown_fail) pil_err(desc, "Subsystem shutdown failed previously!\n"); /* Reinitialize for new image */ /* Reinitialize for new image */ pil_release_mmap(desc); pil_release_mmap(desc); Loading Loading @@ -763,8 +766,12 @@ void pil_shutdown(struct pil_desc *desc) { { struct pil_priv *priv = desc->priv; struct pil_priv *priv = desc->priv; if (desc->ops->shutdown) if (desc->ops->shutdown) { desc->ops->shutdown(desc); if (desc->ops->shutdown(desc)) desc->shutdown_fail = true; else desc->shutdown_fail = false; } if (desc->proxy_unvote_irq) { if (desc->proxy_unvote_irq) { disable_irq(desc->proxy_unvote_irq); disable_irq(desc->proxy_unvote_irq); Loading drivers/soc/qcom/peripheral-loader.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ struct pil_priv; * This defaults to ioremap if not specified. * This defaults to ioremap if not specified. * @unmap_fw_mem: Custom function used to undo mapping by map_fw_mem. * @unmap_fw_mem: Custom function used to undo mapping by map_fw_mem. * This defaults to iounmap if not specified. * This defaults to iounmap if not specified. * @shutdown_fail: Set if PIL op for shutting down subsystem fails. */ */ struct pil_desc { struct pil_desc { const char *name; const char *name; Loading @@ -49,6 +50,7 @@ struct pil_desc { void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data); void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data); void (*unmap_fw_mem)(void *virt, size_t size, void *data); void (*unmap_fw_mem)(void *virt, size_t size, void *data); void *map_data; void *map_data; bool shutdown_fail; }; }; /** /** Loading Loading
drivers/soc/qcom/peripheral-loader.c +9 −2 Original line number Original line Diff line number Diff line Loading @@ -653,6 +653,9 @@ int pil_boot(struct pil_desc *desc) const struct firmware *fw; const struct firmware *fw; struct pil_priv *priv = desc->priv; struct pil_priv *priv = desc->priv; if (desc->shutdown_fail) pil_err(desc, "Subsystem shutdown failed previously!\n"); /* Reinitialize for new image */ /* Reinitialize for new image */ pil_release_mmap(desc); pil_release_mmap(desc); Loading Loading @@ -763,8 +766,12 @@ void pil_shutdown(struct pil_desc *desc) { { struct pil_priv *priv = desc->priv; struct pil_priv *priv = desc->priv; if (desc->ops->shutdown) if (desc->ops->shutdown) { desc->ops->shutdown(desc); if (desc->ops->shutdown(desc)) desc->shutdown_fail = true; else desc->shutdown_fail = false; } if (desc->proxy_unvote_irq) { if (desc->proxy_unvote_irq) { disable_irq(desc->proxy_unvote_irq); disable_irq(desc->proxy_unvote_irq); Loading
drivers/soc/qcom/peripheral-loader.h +2 −0 Original line number Original line Diff line number Diff line Loading @@ -34,6 +34,7 @@ struct pil_priv; * This defaults to ioremap if not specified. * This defaults to ioremap if not specified. * @unmap_fw_mem: Custom function used to undo mapping by map_fw_mem. * @unmap_fw_mem: Custom function used to undo mapping by map_fw_mem. * This defaults to iounmap if not specified. * This defaults to iounmap if not specified. * @shutdown_fail: Set if PIL op for shutting down subsystem fails. */ */ struct pil_desc { struct pil_desc { const char *name; const char *name; Loading @@ -49,6 +50,7 @@ struct pil_desc { void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data); void * (*map_fw_mem)(phys_addr_t phys, size_t size, void *data); void (*unmap_fw_mem)(void *virt, size_t size, void *data); void (*unmap_fw_mem)(void *virt, size_t size, void *data); void *map_data; void *map_data; bool shutdown_fail; }; }; /** /** Loading