> Hello Niklas, > > On 29.04.22 15:50, Niklas Schnelle wrote: > > In a future patch HAS_IOPORT=n will result in inb()/outb() and friends > > not being declared. We thus need to add this dependency and ifdef > > sections of code using inb()/outb() as alternative access methods. > > > > Co-developed-by: Arnd Bergmann <arnd@xxxxxxxxxx> > > Signed-off-by: Niklas Schnelle <schnelle@xxxxxxxxxxxxx> > > [snip] > > > diff --git a/drivers/char/tpm/tpm_infineon.c b/drivers/char/tpm/tpm_infineon.c > > index 9c924a1440a9..2d2ae37153ba 100644 > > --- a/drivers/char/tpm/tpm_infineon.c > > +++ b/drivers/char/tpm/tpm_infineon.c > > @@ -51,34 +51,40 @@ static struct tpm_inf_dev tpm_dev; > > > > static inline void tpm_data_out(unsigned char data, unsigned char offset) > > { > > +#ifdef CONFIG_HAS_IOPORT > > if (tpm_dev.iotype == TPM_INF_IO_PORT) > > outb(data, tpm_dev.data_regs + offset); > > else > > +#endif > > This looks ugly. Can't you declare inb/outb anyway and skip the definition, > so you can use IS_ENABLED() here instead? > > You can mark the declarations with __compiletime_error("some message"), so > if an IS_ENABLED() reference is not removed at compile time, you get some > readable error message instead of a link error. > > Cheers, > Ahmad I didn't know about __compiletime_error() that certainly sounds interesting even when using a normal #ifdef. That said either with the function not being declared or this __compiletime_error() mechanism I would think that using IS_ENABLED() relies on compiler optimizations not to compile in the missing/error function call, right? I'm not sure if that is something we should do.