Erik Stromdahl <erik.stromdahl@xxxxxxxxx> writes: > Add possibility to configure the driver to only start target once. > This can reduce startup time of SDIO devices significantly since > loading the firmware can take a substantial amount of time. But it also makes it impossible to restart the firmware if it crashes, right? Good to mention that in the commit log. > The patch is also necessary for high latency devices in general since > it does not seem to be possible to rerun the BMI phase (fw upload) > without power-cycling the device. > > Signed-off-by: Erik Stromdahl <erik.stromdahl@xxxxxxxxx> [...] > --- a/drivers/net/wireless/ath/ath10k/core.h > +++ b/drivers/net/wireless/ath/ath10k/core.h > @@ -784,6 +784,8 @@ struct ath10k { > > bool is_high_latency; > > + bool is_started; Is a separate boolean really needed? State management becomes really difficult if an enum ath10k_state and this boolean to define the state of the device. Can't you use ar->state? > --- a/drivers/net/wireless/ath/ath10k/hw.h > +++ b/drivers/net/wireless/ath/ath10k/hw.h > @@ -569,6 +569,12 @@ struct ath10k_hw_params { > bool is_high_latency; > > enum ath10k_bus bus; > + > + /* Specifies whether or not the device should be started once. > + * If set, the device will be started once by the early fw probe > + * and it will not be terminated afterwards. > + */ > + bool start_once; > }; I would actually prefer that the bus driver (eg. usb.c) decides this and provides it though ath10k_core_register(). It might be that some SDIO devices have a GPIO line to reset the device etc. The struct ath10k_bus_params I mentioned earlier might be handy also here. -- Kalle Valo