All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Andrew Duggan <aduggan@synaptics.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Christopher Heiny <cheiny@synaptics.com>,
	Nick Dyer <nick@shmanahar.org>,
	linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
	Lyude Paul <thatslyude@gmail.com>
Subject: Re: [PATCH] Input: synaptics-rmi4 - make F03 a tristate symbol
Date: Wed, 11 Jan 2017 17:28:28 +0100	[thread overview]
Message-ID: <20170111162828.GA7997@mail.corp.redhat.com> (raw)
In-Reply-To: <4257703.BL932J6KbN@wuerfel>

On Jan 11 2017 or thereabouts, Arnd Bergmann wrote:
> On Tuesday, January 10, 2017 4:39:43 PM CET Andrew Duggan wrote:
> > On 01/10/2017 04:16 AM, Arnd Bergmann wrote:
> > > If CONFIG_INPUT=m, we get a build error for the rmi4-f03 driver,
> > > added in linux-4.10:
> > >
> > > drivers/input/built-in.o: In function `rmi_f03_attention':
> > > rmi_f03.c:(.text+0xcfe0): undefined reference to `serio_interrupt'
> > > rmi_f03.c:(.text+0xd055): undefined reference to `serio_interrupt'
> > > drivers/input/built-in.o: In function `rmi_f03_remove':
> > > rmi_f03.c:(.text+0xd115): undefined reference to `serio_unregister_port'
> > > drivers/input/built-in.o: In function `rmi_f03_probe':
> > > rmi_f03.c:(.text+0xd209): undefined reference to `__serio_register_port'
> > >
> > > If we make the driver itself a 'tristate' instead of 'bool' symbol,
> > > Kconfig ensures that it can only be a loadable module in this case,
> > > which avoids the problem.
> > 
> > Unfortunately, the RMI4 driver does not support building the function 
> > drivers as modules. If F03 is built as a module it will not be loaded by 
> > the core. If we want f03 to be part of a module then rmi_core needs to 
> > be built as a module. We should remove the module macros currently in 
> > rmi_f03.c.
> > 
> > I was able to get a similar build error by setting CONFIG_RMI_CORE=y and 
> > CONFIG_SERIO=m. Was CONFIG_RMI_CORE=y set when you encountered this 
> > error? If so I think we should figure out a way to have Kconfig set 
> > CONFIG_RMI_CORE=m if serio is built as a module.
> 
> 
> Ok, I see what you mean now in 
> 
> static struct rmi_function_handler *fn_handlers[] = {
>         &rmi_f01_handler,
> #ifdef CONFIG_RMI4_F03
>         &rmi_f03_handler,
> #endif
> #ifdef CONFIG_RMI4_F11
>         &rmi_f11_handler,
> #endif
> ...
> };
> 
> I think we can actually make this more modular and more like other
> drivers work:
> 
> If each of the sub-drivers gets changed to call
> rmi_register_function_handler() on its own handler structure,
> having some drivers as modules would just work.
> 
> It looks like the rmi_bus.c file was written to do it that way,
> but for some reason the references to those drivers are all
> in the same file.
> 

Yep, it was initially written that way, and IIRC there was some issues
depending on how the drivers were compiled. For example, if rmi4_core is
Y and some functions are m, you can't load the device initially, so you
send a -EPROBE_DEFER, but how can you be sure that the function will
ever be loaded?

Given that we need to have all the functions loaded during probe, we
decided to switch to a monolithic rmi4_core driver that has everything
it needs inside.

I think having the dependency on SERIO=m implying RMI4_CORE=m should be
doable and is probably the best solution with the current code.

Cheers,
Benjamin

  reply	other threads:[~2017-01-11 16:28 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-10 12:16 [PATCH] Input: synaptics-rmi4 - make F03 a tristate symbol Arnd Bergmann
2017-01-11  0:39 ` Andrew Duggan
2017-01-11  0:39   ` Andrew Duggan
2017-01-11 15:39   ` Arnd Bergmann
2017-01-11 16:28     ` Benjamin Tissoires [this message]
2017-01-11 16:54       ` Arnd Bergmann
2017-01-11 17:48         ` Benjamin Tissoires
2017-01-11 19:27           ` Christopher Heiny
2017-01-13  0:42             ` Andrew Duggan
2017-01-13  0:42               ` Andrew Duggan
2017-01-13 21:14               ` Arnd Bergmann
2017-01-13  6:22 ` Dmitry Torokhov
2017-01-13 21:06   ` Arnd Bergmann
2017-01-13 21:15     ` Dmitry Torokhov
2017-01-13 21:34       ` Arnd Bergmann
2017-01-13 21:42         ` Dmitry Torokhov
2017-01-14 12:09           ` Arnd Bergmann
2017-01-15 23:39             ` Dmitry Torokhov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170111162828.GA7997@mail.corp.redhat.com \
    --to=benjamin.tissoires@redhat.com \
    --cc=aduggan@synaptics.com \
    --cc=arnd@arndb.de \
    --cc=cheiny@synaptics.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nick@shmanahar.org \
    --cc=thatslyude@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.