From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: "Michel Dänzer" <michel@daenzer.net>
Cc: Ben Hutchings <ben@decadent.org.uk>,
linuxppc-dev <linuxppc-dev@lists.ozlabs.org>
Subject: Re: therm_pm72 units, interface
Date: Mon, 05 Aug 2013 19:22:34 +1000 [thread overview]
Message-ID: <1375694554.12557.40.camel@pasglop> (raw)
In-Reply-To: <1375693993.3852.143.camel@thor.local>
On Mon, 2013-08-05 at 11:13 +0200, Michel Dänzer wrote:
> > static struct platform_driver i2c_powermac_driver = {
> > .probe = i2c_powermac_probe,
> > .remove = i2c_powermac_remove,
> > + .id_table = *i2c_powermac_id,
>
> This fails to build:
>
> CC [M] drivers/i2c/busses/i2c-powermac.o
> drivers/i2c/busses/i2c-powermac.c:469:14: error: invalid type argument
> of unary ‘*’ (have ‘const struct platform_device_id’)
> make[1]: *** [drivers/i2c/busses/i2c-powermac.o] Error 1
Yeah, obvious typo, I said it was completely untested :-)
> The version below builds, but the module still doesn't get loaded
> automagically (unless I'm missing some command I need to run between
> copying the new module to /lib/modules/$(uname -r)/ and rebooting?).
depmod -a ?
> Looking at other drivers in drivers/i2c/busses/, maybe
> i2c_powermac_driver.driver needs an of_match_table entry?
No, that would be messy, the driver is just an interface layer
on top of the low-i2c.c stuff in arch, which abstracts 3 different
i2c controllers and inconsistent device-tree representations. It's
done outside of the normal i2c framework because it's used in some
special contexts such as when running the platform functions, at early
boot or sleep/wakeup time. Also it's historical stuff I'd rather not
touch since I don't have that many different combos to test with
anymore.
However, the kernel creates platform device so the normal platform
matching mechanism should work... we might be missing something.
> diff --git a/drivers/i2c/busses/i2c-powermac.c
> b/drivers/i2c/busses/i2c-powermac.c
> index 8dc90da..74066fc 100644
> --- a/drivers/i2c/busses/i2c-powermac.c
> +++ b/drivers/i2c/busses/i2c-powermac.c
> @@ -458,9 +458,19 @@ static int i2c_powermac_probe(struct
> platform_device *dev)
> return rc;
> }
>
> +static const struct platform_device_id i2c_powermac_id[] = {
> + {
> + .name = "i2c-powermac"
> + }, {
> + /* sentinel */
> + }
> +};
> +MODULE_DEVICE_TABLE(platform, i2c_powermac_id);
> +
> static struct platform_driver i2c_powermac_driver = {
> .probe = i2c_powermac_probe,
> .remove = i2c_powermac_remove,
> + .id_table = i2c_powermac_id,
> .driver = {
> .name = "i2c-powermac",
> .bus = &platform_bus_type,
> @@ -468,5 +478,3 @@ static struct platform_driver i2c_powermac_driver
> =
> {
> };
>
> module_platform_driver(i2c_powermac_driver);
> -
> -MODULE_ALIAS("platform:i2c-powermac");
Maybe add the module alias back ? It shouldn't be necessary...
Cheers,
Ben.
next prev parent reply other threads:[~2013-08-05 9:22 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-15 17:53 therm_pm72 units, interface Jan Engelhardt
2012-08-15 21:35 ` Benjamin Herrenschmidt
2012-08-16 15:24 ` Jan Engelhardt
2012-08-16 20:51 ` Benjamin Herrenschmidt
2012-08-17 13:51 ` Jan Engelhardt
2012-08-17 20:17 ` Benjamin Herrenschmidt
2012-08-17 14:23 ` Jan Engelhardt
2012-08-15 21:36 ` Benjamin Herrenschmidt
2013-01-17 14:38 ` Jan Engelhardt
2013-01-17 23:38 ` Benjamin Herrenschmidt
2013-07-19 17:43 ` Aaro Koskinen
2013-07-19 23:16 ` Benjamin Herrenschmidt
2013-07-20 20:33 ` Aaro Koskinen
2013-07-20 23:42 ` Benjamin Herrenschmidt
2013-08-02 10:03 ` Michel Dänzer
2013-08-02 12:51 ` Benjamin Herrenschmidt
2013-08-02 14:47 ` Michel Dänzer
2013-08-02 15:58 ` Aaro Koskinen
2013-08-02 16:52 ` Michel Dänzer
2013-08-02 21:02 ` Benjamin Herrenschmidt
2013-08-05 9:13 ` Michel Dänzer
2013-08-05 9:22 ` Benjamin Herrenschmidt [this message]
2013-08-05 10:32 ` Michel Dänzer
2013-08-05 10:53 ` Benjamin Herrenschmidt
2013-09-27 15:44 ` Michel Dänzer
2013-08-02 20:47 ` Benjamin Herrenschmidt
2013-08-02 20:56 ` Ben Hutchings
2013-08-02 21:04 ` Benjamin Herrenschmidt
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=1375694554.12557.40.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=ben@decadent.org.uk \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=michel@daenzer.net \
/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.