From: "Pali Rohár" <pali.rohar@gmail.com>
To: "H. Nikolaus Schaller" <hns@goldelico.com>
Cc: Sebastian Reichel <sre@kernel.org>,
Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
David Woodhouse <dwmw2@infradead.org>,
linux-pm@vger.kernel.org
Subject: Re: [PATCH 4/4] w1:slaves:bq27000: load battery driver kernel module if required
Date: Thu, 8 Oct 2015 09:54:22 +0200 [thread overview]
Message-ID: <20151008075422.GC27737@pali> (raw)
In-Reply-To: <7F953A3F-D9F5-4BA0-A7B5-0CF8AAB5C937@goldelico.com>
On Thursday 08 October 2015 09:26:26 H. Nikolaus Schaller wrote:
>
> Am 08.10.2015 um 00:26 schrieb Pali Rohár <pali.rohar@gmail.com>:
>
> > On Wednesday 07 October 2015 20:42:39 H. Nikolaus Schaller wrote:
> >> Explicitly call request_module() in the wrapper so that the
> >> bq27x00_battery driver is loded on demand, when compiled as module.
> >>
> >> Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com>
> >> ---
> >> drivers/w1/slaves/w1_bq27000.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >>
> >> diff --git a/drivers/w1/slaves/w1_bq27000.c
> >> b/drivers/w1/slaves/w1_bq27000.c index caafb17..745bd6e 100644
> >> --- a/drivers/w1/slaves/w1_bq27000.c
> >> +++ b/drivers/w1/slaves/w1_bq27000.c
> >> @@ -49,6 +49,8 @@ static int w1_bq27000_add_slave(struct w1_slave
> >> *sl) int ret;
> >> struct platform_device *pdev;
> >>
> >> + request_module("bq27x00_battery"); /* load as module if needed */
> >> +
> >> pdev = platform_device_alloc("bq27000-battery", -1);
> >> if (!pdev) {
> >> ret = -ENOMEM;
> >
> > Hi! Function platform_device_alloc would allocate kernel device and it
> > should also load appropriate kernel driver (via platform:bq27000-battery
> > alias). If that does not work, problem is somewhere else. Maybe depmod
> > is not properly generated? Or bq27x00_batter.ko modules does not contain
> > needed alias?
>
At least driver is renaming in upstream kernel, so hardcoding driver
name is wrong approach. It will be broken... If we show that
request_module is really needed (but I believe not!) then please use
alias instead.
> alias exists:
>
> #ifdef CONFIG_BATTERY_BQ27X00_PLATFORM
> MODULE_ALIAS("platform:bq27000-battery");
> #endif
>
> depmod entry exist:
>
> root@letux:~# modprobe -c | fgrep bq27
> alias i2c:bq27000_battery bq27x00_battery
> alias i2c:bq27200 bq27x00_battery
> alias i2c:bq27425 bq27x00_battery
> alias i2c:bq27500 bq27x00_battery
> alias i2c:bq27510 bq27x00_battery
> alias i2c:bq27742 bq27x00_battery
> alias platform:bq27000_battery bq27x00_battery
> alias w1_family_0x01 w1_bq27000
>
> And I have traced all calls to call_modprobe
>
> [ 9.969085] call_modprobe w1-family-0x01
> [ 10.189727] call_modprobe bq27x00_battery
> [ 29.879333] call_modprobe net-pf-10
> [ 30.530548] call_modprobe netdev-eth0
> [ 30.548156] call_modprobe eth0
> [ 30.565063] call_modprobe netdev-eth0
> [ 30.581420] call_modprobe eth0
> [ 31.301300] call_modprobe netdev-eth1
> [ 31.316101] call_modprobe eth1
> [ 32.008270] call_modprobe usbfunc:ecm
> [ 35.554748] call_modprobe net-pf-16-proto-9
> [ 36.243164] call_modprobe net-pf-31
> [ 36.614410] call_modprobe bt-proto-4
> [ 73.888122] call_modprobe net-pf-16-proto-9
> [ 73.921112] call_modprobe net-pf-16-proto-9
> [ 77.153625] call_modprobe net-pf-16-proto-9
> [ 77.188262] call_modprobe net-pf-16-proto-9
> [ 77.342895] call_modprobe net-pf-16-proto-9
> [ 77.389129] call_modprobe net-pf-16-proto-9
> [ 77.419006] call_modprobe net-pf-16-proto-9
>
> And there is only the line I have added. I.e. I can't find an automatic attempt
> to load the platform:bq27000-battery. It also doesn't help to change to
> platform_device_alloc("bq27000_battery", -1)
>
> So I think platform_device_alloc() does only what it tells: it allocates a device
> but does *not* try to load a kernel module. It only binds to a driver compiled
> into the kernel. AFAIR the I2C bus driver also calls request_module() at some
> stage after finding a client (i2c:bq27000_battery).
>
Try to call platform_device_register(). E.g for rx51-battery power
supply device it is working fine. Device itself is allocated and
registered in arch/arm/mach-omap2/board-rx51-peripherals.c and driver is
in drivers/power/rx51_battery.c. You can also try to reuse that code...
I see that w1 is quite different.
> > Adding request_module() here is not proper solution. Real problem is
> > somewhere else... Anyway there is series of patches for bq27x00_battery
> > which should cleanup some problems, so maybe they also fix your problem.
>
> Is there a tree where I can pull the patches to cross-check if they change
> something?
>
Sebastian? Where are those new bq27k patches now?
> BR,
> Nikolaus
>
--
Pali Rohár
pali.rohar@gmail.com
next prev parent reply other threads:[~2015-10-08 7:54 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-07 18:42 [PATCH 0/4] Fix minor bq27x00 displeasures H. Nikolaus Schaller
2015-10-07 18:42 ` [PATCH 1/4] restore bq27000 code of v4.3-rc4 H. Nikolaus Schaller
2015-10-07 18:43 ` H. Nikolaus Schaller
2015-10-07 18:42 ` [PATCH 2/4] restore w1 slave " H. Nikolaus Schaller
2015-10-07 18:44 ` H. Nikolaus Schaller
2015-10-07 18:42 ` [PATCH 3/4] power:bq27x00: don't fill system log by missing battery H. Nikolaus Schaller
2015-10-07 22:23 ` Pali Rohár
2015-10-07 22:50 ` Neil Brown
2015-12-05 0:38 ` Sebastian Reichel
2015-10-07 18:42 ` [PATCH 4/4] w1:slaves:bq27000: load battery driver kernel module if required H. Nikolaus Schaller
2015-10-07 22:26 ` Pali Rohár
2015-10-08 7:26 ` H. Nikolaus Schaller
2015-10-08 7:54 ` Pali Rohár [this message]
2015-10-08 9:58 ` H. Nikolaus Schaller
2015-10-07 18:45 ` [PATCH 0/4] Fix minor bq27x00 displeasures H. Nikolaus Schaller
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=20151008075422.GC27737@pali \
--to=pali.rohar@gmail.com \
--cc=dbaryshkov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=hns@goldelico.com \
--cc=linux-pm@vger.kernel.org \
--cc=sre@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).