summaryrefslogtreecommitdiff
path: root/drivers/of/of_i2c.c
AgeCommit message (Collapse)AuthorFilesLines
2012-05-12of/i2c: implement of_find_i2c_adapter_by_nodeStephen Warren1-0/+14
This finds the struct i2c_adapter * for a given device tree node. Just like of_find_i2c_device_by_node. Signed-off-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
2012-05-12of/i2c: call i2c_verify_client from of_find_i2c_device_by_nodeStephen Warren1-1/+1
i2c_bus_type may contain both I2C clients and I2C adapters. Fix of_find_i2c_device_by_node to call i2c_verify_client to ensure that it only returns non-NULL of I2C clients. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Rob Herring <rob.herring@calxeda.com> Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
2010-12-24of/i2c: Fix request module by aliasDavid Daney1-1/+1
If we are registering an i2c device that has a device tree node like this real-world example: rtc@68 { compatible = "dallas,ds1337"; reg = <0x68>; }; of_i2c_register_devices() will try to load a module called ds1337.ko. There is no such module, so it will fail. If we look in modules.alias we will find entries like these: . . . alias i2c:ds1339 rtc_ds1307 alias i2c:ds1338 rtc_ds1307 alias i2c:ds1337 rtc_ds1307 alias i2c:ds1307 rtc_ds1307 alias i2c:ds1374 rtc_ds1374 . . . The module we want is really called rtc_ds1307.ko. If we request a module called "i2c:ds1337", the userspace module loader will do the right thing (unless it is busybox) and load rtc_ds1307.ko. So we add the I2C_MODULE_PREFIX to the request_module() string. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-10-21of/mips: Cleanup some include directives/files.David Daney1-0/+1
The __init directives should go on the definitions of things, not the declaration, also __init is meaningless for inline functions, so remove it from prom.h. This allows us to get rid of a useless #include, but most of the rest of them are useless too, so kill them as well. If of_i2c.c needs irq definitions, it should include linux/irq.h directly, not assume indirect inclusion via asm/prom.h. Signed-off-by: David Daney <ddaney@caviumnetworks.com> Acked-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-07-06of/i2c: Generalize OF supportGrant Likely1-21/+29
This patch cleans up the i2c OF support code to make it selectable by all architectures and allow for automatic registration of i2c devices. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-05-19of: eliminate of_device->node and dev_archdata->{of,prom}_nodeGrant Likely1-1/+0
This patch eliminates the node pointer from struct of_device and the of_node (or prom_node) pointer from struct dev_archdata since the node pointer is now part of struct device proper when CONFIG_OF is set, and all users of the old pointer locations have already been converted over to use device->of_node. Also remove dev_archdata_{get,set}_node() as it is no longer used by anything. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-05-19of: Always use 'struct device.of_node' to get device node pointer.Grant Likely1-1/+1
The following structure elements duplicate the information in 'struct device.of_node' and so are being eliminated. This patch makes all readers of these elements use device.of_node instead. (struct of_device *)->node (struct dev_archdata *)->prom_node (sparc) (struct dev_archdata *)->of_node (powerpc & microblaze) Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-04-29i2c/of: Allow device node to be passed via i2c_board_infoGrant Likely1-0/+1
The struct device_node *of_node pointer is moving out of dev->archdata and into the struct device proper. of_i2c.c needs to set the of_node pointer before the device is registered. Since the i2c subsystem doesn't allow 2 stage allocation and registration of i2c devices, the of_node pointer needs to be passed via the i2c_board_info structure so that it is set prior to registration. This patch adds of_node to struct i2c_board_info (conditional on CONFIG_OF), sets of_node in i2c_new_device(), and modifies of_i2c.c to use the new parameter. The calling of dev_archdata_set_node() from of_i2c will be removed in a subsequent patch when of_node is removed from archdata and all users are converted over. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2010-02-09of: assume big-endian properties, adding conversions where necessaryJeremy Kerr1-2/+2
Properties in the device tree are specified as big-endian. At present, the only platforms to support device trees are also big-endian, so we've been acessing the properties as raw values. We'd like to add device tree support to little-endian platforms too, so add endian conversion to the sites where we access property values in the common of code. Compiled on powerpc (ppc44x_defconfig & ppc64_defconfig) and arm (fdt support only for now). Signed-off-by: Jeremy Kerr <jeremy.kerr@canonical.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2009-01-10drivers/of: Add the of_find_i2c_device_by_node function.Jon Smirl1-0/+19
The of_find_i2c_device_by_node function allows you to follow a reference in the device tree to an i2c device node and then locate the linux device instantiated by the device tree. Example use: an I2S bus driver finding the i2c_device instance for a codec described by a device tree node. This was waiting for Anton's i2c patches that were just added. Signed-off-by: Jon Smirl <jonsmirl@gmail.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2008-12-03of/i2c: Fill the archdata for I2C devicesAnton Vorontsov1-0/+11
For I2C devices we just setting the node pointer in the archdata. This is needed so that the I2C devices could find their OF tree nodes. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Acked-by: Grant Likely <grant.likely@secretlab.ca> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-10-21of: Format string bug in drivers/of/of_i2c.cJon Smirl1-1/+1
Format string bug. Not exploitable, as this is only writable by root, but worth fixing all the same. See 326f6a5c9c9e1a62aec37bdc0c3f8d53adabe77b Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2008-07-26of: adapt of_find_i2c_driver() to be usable by SPI alsoGrant Likely1-61/+3
SPI has a similar problem as I2C in that it needs to determine an appropriate modalias value for each device node. This patch adapts the of_i2c of_find_i2c_driver() function to be usable by of_spi also. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2008-07-22powerpc/mpc5200: Fix wrong 'no interrupt' handling in of_i2cWolfram Sang1-2/+0
If an I2C device node does not specify an interrupt, the .irq member of the board_info struct was set to -1. This caused crashes on following irq_dispose_mappings. Leave it NO_IRQ as returned from irq_of_parse_and_map. (Suggesting -1 as 'i2c-no-irq' used to be a bug in linux/i2c.h.) Signed-off-by: Wolfram Sang <w.sang@pengutronix.de> Acked-by: Sean MacLennan <smaclennan@pikatech.com> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2008-07-12OpenFirmware: Include <linux/of_i2c.h> from of_i2c.c.Robert P. J. Day1-0/+1
drivers/of/of_i2c.c should include <linux/of_i2c.h> for the prototype for of_register_i2c_devices(). Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Acked-by: Jean Delvare <khali@linux-fr.org> Acked-by: Jochen Friedrich <jochen@scram.de> Acked-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
2008-06-06rtc-ds1374: rename device to just "ds1374"Jean Delvare1-1/+0
Change the name of the device from "rtc-ds1374" to just "ds1374", to match what all other RTC drivers do. I seem to remember that this name was chosen to avoid possible confusion with an older ds1374 driver, but that driver was removed 3 months ago. Signed-off-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Alessandro Zummo <a.zummo@towertech.it> Acked-by: Kumar Gala <galak@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: David Brownell <david-b@pacbell.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-04-24[POWERPC] drivers/of/of_i2c.c: Add MODULE_LICENSEAdrian Bunk1-0/+3
After commit 585468e5d5962660867c269e26f0a4b89a599473 ([POWERPC] i2c: Fix build breakage introduced by OF helpers) drivers/of/of_i2c.c needs a MODULE_LICENSE. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
2008-04-20[POWERPC] i2c: Fix build breakage introduced by OF helpersJochen Friedrich1-0/+115
Fix build breakage introduced in commit "[POWERPC] i2c: OF helpers for the i2c API". If i2c-core is compiled as a module, the helper needs to be compiled as a module, as well. Rename i2c.c to of_i2c.c to avoid name space conflict. [paulus@samba.org: Changed dependency from OF to PPC_OF to avoid sparc{32,64} allmodconfig breakage.] Signed-off-by: Jochen Friedrich <jochen@scram.de> Signed-off-by: Paul Mackerras <paulus@samba.org>