On Fri, May 08, 2020 at 10:59:38AM -0700, Matthias Kaehlcke wrote: > Hi Akash, > > overall this looks good to me, a few comments inline > > On Fri, May 08, 2020 at 12:03:34PM +0530, Akash Asthana wrote: > > QUP core clock is shared among all the SE drivers present on particular > > QUP wrapper, the system will reset(unclocked access) if earlycon used after > > QUP core clock is put to 0 from other SE drivers before real console comes > > up. > > > > As earlycon can't vote for it's QUP core need, to fix this add ICC > > support to common/QUP wrapper driver and put vote for QUP core from > > probe on behalf of earlycon and remove vote during earlycon exit call. > > > > Signed-off-by: Akash Asthana <akashast@xxxxxxxxxxxxxx> > > Reported-by: Matthias Kaehlcke <mka@xxxxxxxxxxxx> > > --- > > Change in V3: > > - Add geni_remove_earlycon_icc_vote API that will be used by earlycon > > exit function to remove ICC vote for earlyconsole. > > - Remove suspend/resume hook for geni-se driver as we are no longer > > removing earlyconsole ICC vote from system suspend, we are removing > > from earlycon exit. > > > > Change in V4: > > - As per Matthias comment make 'earlycon_wrapper' as static structure. > > > > Changes in V5: > > - Vote for core path only after checking whether "qcom_geni" earlycon is > > actually present or not by traversing over structure "console_drivers". > > > > drivers/soc/qcom/qcom-geni-se.c | 63 +++++++++++++++++++++++++++++++++++ > > drivers/tty/serial/qcom_geni_serial.c | 7 ++++ > > include/linux/qcom-geni-se.h | 2 ++ > > 3 files changed, 72 insertions(+) > > > > diff --git a/drivers/soc/qcom/qcom-geni-se.c b/drivers/soc/qcom/qcom-geni-se.c > > index 63403bf..66fe6f2 100644 > > --- a/drivers/soc/qcom/qcom-geni-se.c > > +++ b/drivers/soc/qcom/qcom-geni-se.c ... > > +#ifdef CONFIG_SERIAL_EARLYCON > > + if (console_drivers) > > The loop should have curly braces ("use braces when a loop contains more than > a single simple statement"), even though the compiler doesn't need them in > this case. This is not a loop, but I was told by a maintainer that it equally > applies, which makes sense. > > You could avoid one level of indentation through: > > if (!console_drivers) > goto exit; > > > + for_each_console(bcon) Actually the NULL check of 'console_drivers' is not needed: #define for_each_console(con) \ for (con = console_drivers; con != NULL; con = con->next) see also: commit caa72c3bc584bc28b557bcf1a47532a7a6f37e6f Author: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Date: Mon Feb 3 15:31:25 2020 +0200 console: Drop double check for console_drivers being non-NULL