Device tree updates for v3.11
This branch contains the following changes: - Removal of CONFIG_OF_DEVICE, it is always enabled by CONFIG_OF - Remove #ifdef from linux/of_platform.h to increase compiler syntax coverage - Bug fix for address decoding on Bimini and js2x powerpc platforms. - miscellaneous binding changes One note on the above. The binding changes going in from all kinds of different trees has gotten rather out of hand. I picked up some during this cycle, but even going though my tree isn't a great fit. Ian Campbell has prototyped splitting the bindings and .dtb files into a separate repository. The plan is to migrate to using that sometime in the next few kernel releases which should get rid of a lot of the churn on binding docs and .dts files. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAABAgAGBQJR1fP3AAoJEEFnBt12D9kB3IIP/0Q5ctMespiJ50+ThjGsaR3m sUbQkMK46uL/oupXaJT2ybX2PxLN5LpgvO9rPt77hblOoL0+wZt+j9G0pLy1qZQZ aHprH9SrpGJv6F0SFbHp/+D/m9vESPv+zwYzL9TvrOALvCD7OSZ7tHLaoF7Y1ADM QnZa7pta3Owpu5NsGXaTXLpaZzfXzfWzf4PDzv2FsAIDbtuVJZGJZ7sJVO7Z0r+K KCY85uKJ4VOHY0onBVlM6uoCnopOi2XMMkyxYvR28lL2Kiv2b3np46jG3zX1EZH5 Qxdu85QZn2oio9iaTeYKK8bG9aRIRsXnzCnF2s68n2rQlEtPpWKN9Lj2AS/KJ+Ig obFTOFDHmxt1F4GIA0/HIPkDvRd7GTIwgwYYubEMi44E3Mae0N+xzkIRE41vYP7s 8zaNHbjAjsYjplsvN5gTPxxiU/ta24a5bl7Ont2zmOjAbXCsDajm4NCKZRJ3lb2f FHNsS1zHGmqgJ9zt13GQabo/Tp4t3KwTzBirPQsDokRO4eoL6klcS3GCRv82VWC0 dLnzu92hXcyXgh7mX2sj6sRBSwNygxMn4ZsZJklle38/LynvtrzT72BOZjghS+Vh l553uDInjSJ3IBrXnClPoyObcu50cmsBBgsK39FzU+MF9mcCHmkHQiT52zM6ZW3M wwY1OfcZk3XaT7akcVu6 =CndB -----END PGP SIGNATURE----- Merge tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux Pull device tree updates from Grant Likely: "This branch contains the following changes: - Removal of CONFIG_OF_DEVICE, it is always enabled by CONFIG_OF - Remove #ifdef from linux/of_platform.h to increase compiler syntax coverage - Bug fix for address decoding on Bimini and js2x powerpc platforms. - miscellaneous binding changes One note on the above. The binding changes going in from all kinds of different trees has gotten rather out of hand. I picked up some during this cycle, but even going though my tree isn't a great fit. Ian Campbell has prototyped splitting the bindings and .dtb files into a separate repository. The plan is to migrate to using that sometime in the next few kernel releases which should get rid of a lot of the churn on binding docs and .dts files" * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux: of: Fix address decoding on Bimini and js2x machines of: remove CONFIG_OF_DEVICE usb: chipidea: depend on CONFIG_OF instead of CONFIG_OF_DEVICE of: remove of_platform_driver ibmebus: convert of_platform_driver to platform_driver driver core: move to_platform_driver to platform_device.h mfd: DT bindings for the palmas family MFD ARM: dts: omap3-devkit8000: fix NAND memory binding of/base: fix typos of: remove #ifdef from linux/of_platform.h
This commit is contained in:
Коммит
74b9272bbe
|
@ -0,0 +1,49 @@
|
|||
* palmas device tree bindings
|
||||
|
||||
The TI palmas family current members :-
|
||||
twl6035 (palmas)
|
||||
twl6037 (palmas)
|
||||
tps65913 (palmas)
|
||||
tps65914 (palmas)
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be from the list
|
||||
ti,twl6035
|
||||
ti,twl6036
|
||||
ti,twl6037
|
||||
ti,tps65913
|
||||
ti,tps65914
|
||||
ti,tps80036
|
||||
and also the generic series names
|
||||
ti,palmas
|
||||
- interrupt-controller : palmas has its own internal IRQs
|
||||
- #interrupt-cells : should be set to 2 for IRQ number and flags
|
||||
The first cell is the IRQ number.
|
||||
The second cell is the flags, encoded as the trigger masks from
|
||||
Documentation/devicetree/bindings/interrupts.txt
|
||||
- interrupt-parent : The parent interrupt controller.
|
||||
|
||||
Optional properties:
|
||||
ti,mux-padX : set the pad register X (1-2) to the correct muxing for the
|
||||
hardware, if not set will use muxing in OTP.
|
||||
|
||||
Example:
|
||||
|
||||
palmas {
|
||||
compatible = "ti,twl6035", "ti,palmas";
|
||||
reg = <0x48>
|
||||
interrupt-parent = <&intc>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
|
||||
ti,mux-pad1 = <0>;
|
||||
ti,mux-pad2 = <0>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
pmic {
|
||||
compatible = "ti,twl6035-pmic", "ti,palmas-pmic";
|
||||
....
|
||||
};
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
* palmas regulator IP block devicetree bindings
|
||||
|
||||
Required properties:
|
||||
- compatible : Should be from the list
|
||||
ti,twl6035-pmic
|
||||
ti,twl6036-pmic
|
||||
ti,twl6037-pmic
|
||||
ti,tps65913-pmic
|
||||
ti,tps65914-pmic
|
||||
and also the generic series names
|
||||
ti,palmas-pmic
|
||||
- interrupt-parent : The parent interrupt controller which is palmas.
|
||||
- interrupts : The interrupt number and the type which can be looked up here:
|
||||
arch/arm/boot/dts/include/dt-bindings/interrupt-controller/irq.h
|
||||
- interrupts-name: The names of the individual interrupts.
|
||||
|
||||
Optional properties:
|
||||
- ti,ldo6-vibrator : ldo6 is in vibrator mode
|
||||
|
||||
Optional nodes:
|
||||
- regulators : Must contain a sub-node per regulator from the list below.
|
||||
Each sub-node should contain the constraints and initialization
|
||||
information for that regulator. See regulator.txt for a
|
||||
description of standard properties for these sub-nodes.
|
||||
Additional custom properties are listed below.
|
||||
|
||||
For ti,palmas-pmic - smps12, smps123, smps3 depending on OTP,
|
||||
smps45, smps457, smps7 depending on variant, smps6, smps[8-10],
|
||||
ldo[1-9], ldoln, ldousb.
|
||||
|
||||
Optional sub-node properties:
|
||||
ti,warm-reset - maintain voltage during warm reset(boolean)
|
||||
ti,roof-floor - control voltage selection by pin(boolean)
|
||||
ti,sleep-mode - mode to adopt in pmic sleep 0 - off, 1 - auto,
|
||||
2 - eco, 3 - forced pwm
|
||||
ti,tstep - slope control 0 - Jump, 1 10mV/us, 2 5mV/us, 3 2.5mV/us
|
||||
ti,smps-range - OTP has the wrong range set for the hardware so override
|
||||
0 - low range, 1 - high range.
|
||||
|
||||
Example:
|
||||
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
pmic {
|
||||
compatible = "ti,twl6035-pmic", "ti,palmas-pmic";
|
||||
interrupt-parent = <&palmas>;
|
||||
interrupts = <14 IRQ_TYPE_NONE>;
|
||||
interrupts-name = "short-irq";
|
||||
|
||||
ti,ldo6-vibrator;
|
||||
|
||||
regulators {
|
||||
smps12_reg : smps12 {
|
||||
regulator-name = "smps12";
|
||||
regulator-min-microvolt = < 600000>;
|
||||
regulator-max-microvolt = <1500000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,warm-reset;
|
||||
ti,roof-floor;
|
||||
ti,mode-sleep = <0>;
|
||||
ti,tstep = <0>;
|
||||
ti,smps-range = <1>;
|
||||
};
|
||||
|
||||
ldo1_reg: ldo1 {
|
||||
regulator-name = "ldo1";
|
||||
regulator-min-microvolt = <2800000>;
|
||||
regulator-max-microvolt = <2800000>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -124,20 +124,21 @@
|
|||
reg = <0 0 0>; /* CS0, offset 0 */
|
||||
nand-bus-width = <16>;
|
||||
|
||||
gpmc,sync-clk = <0>;
|
||||
gpmc,cs-on = <0>;
|
||||
gpmc,cs-rd-off = <44>;
|
||||
gpmc,cs-wr-off = <44>;
|
||||
gpmc,adv-on = <6>;
|
||||
gpmc,adv-rd-off = <34>;
|
||||
gpmc,adv-wr-off = <44>;
|
||||
gpmc,we-off = <40>;
|
||||
gpmc,oe-off = <54>;
|
||||
gpmc,access = <64>;
|
||||
gpmc,rd-cycle = <82>;
|
||||
gpmc,wr-cycle = <82>;
|
||||
gpmc,wr-access = <40>;
|
||||
gpmc,wr-data-mux-bus = <0>;
|
||||
gpmc,device-nand;
|
||||
gpmc,sync-clki-ps = <0>;
|
||||
gpmc,cs-on-ns = <0>;
|
||||
gpmc,cs-rd-off-ns = <44>;
|
||||
gpmc,cs-wr-off-ns = <44>;
|
||||
gpmc,adv-on-ns = <6>;
|
||||
gpmc,adv-rd-off-ns = <34>;
|
||||
gpmc,adv-wr-off-ns = <44>;
|
||||
gpmc,we-off-ns = <40>;
|
||||
gpmc,oe-off-ns = <54>;
|
||||
gpmc,access-ns = <64>;
|
||||
gpmc,rd-cycle-ns = <82>;
|
||||
gpmc,wr-cycle-ns = <82>;
|
||||
gpmc,wr-access-ns = <40>;
|
||||
gpmc,wr-data-mux-bus-ns = <0>;
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
|
|
@ -48,8 +48,8 @@
|
|||
|
||||
extern struct bus_type ibmebus_bus_type;
|
||||
|
||||
int ibmebus_register_driver(struct of_platform_driver *drv);
|
||||
void ibmebus_unregister_driver(struct of_platform_driver *drv);
|
||||
int ibmebus_register_driver(struct platform_driver *drv);
|
||||
void ibmebus_unregister_driver(struct platform_driver *drv);
|
||||
|
||||
int ibmebus_request_irq(u32 ist, irq_handler_t handler,
|
||||
unsigned long irq_flags, const char *devname,
|
||||
|
|
|
@ -205,7 +205,7 @@ static int ibmebus_create_devices(const struct of_device_id *matches)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int ibmebus_register_driver(struct of_platform_driver *drv)
|
||||
int ibmebus_register_driver(struct platform_driver *drv)
|
||||
{
|
||||
/* If the driver uses devices that ibmebus doesn't know, add them */
|
||||
ibmebus_create_devices(drv->driver.of_match_table);
|
||||
|
@ -215,7 +215,7 @@ int ibmebus_register_driver(struct of_platform_driver *drv)
|
|||
}
|
||||
EXPORT_SYMBOL(ibmebus_register_driver);
|
||||
|
||||
void ibmebus_unregister_driver(struct of_platform_driver *drv)
|
||||
void ibmebus_unregister_driver(struct platform_driver *drv)
|
||||
{
|
||||
driver_unregister(&drv->driver);
|
||||
}
|
||||
|
@ -338,11 +338,10 @@ static int ibmebus_bus_bus_match(struct device *dev, struct device_driver *drv)
|
|||
static int ibmebus_bus_device_probe(struct device *dev)
|
||||
{
|
||||
int error = -ENODEV;
|
||||
struct of_platform_driver *drv;
|
||||
struct platform_driver *drv;
|
||||
struct platform_device *of_dev;
|
||||
const struct of_device_id *match;
|
||||
|
||||
drv = to_of_platform_driver(dev->driver);
|
||||
drv = to_platform_driver(dev->driver);
|
||||
of_dev = to_platform_device(dev);
|
||||
|
||||
if (!drv->probe)
|
||||
|
@ -350,9 +349,8 @@ static int ibmebus_bus_device_probe(struct device *dev)
|
|||
|
||||
of_dev_get(of_dev);
|
||||
|
||||
match = of_match_device(drv->driver.of_match_table, dev);
|
||||
if (match)
|
||||
error = drv->probe(of_dev, match);
|
||||
if (of_driver_match_device(dev, dev->driver))
|
||||
error = drv->probe(of_dev);
|
||||
if (error)
|
||||
of_dev_put(of_dev);
|
||||
|
||||
|
@ -362,7 +360,7 @@ static int ibmebus_bus_device_probe(struct device *dev)
|
|||
static int ibmebus_bus_device_remove(struct device *dev)
|
||||
{
|
||||
struct platform_device *of_dev = to_platform_device(dev);
|
||||
struct of_platform_driver *drv = to_of_platform_driver(dev->driver);
|
||||
struct platform_driver *drv = to_platform_driver(dev->driver);
|
||||
|
||||
if (dev->driver && drv->remove)
|
||||
drv->remove(of_dev);
|
||||
|
@ -372,7 +370,7 @@ static int ibmebus_bus_device_remove(struct device *dev)
|
|||
static void ibmebus_bus_device_shutdown(struct device *dev)
|
||||
{
|
||||
struct platform_device *of_dev = to_platform_device(dev);
|
||||
struct of_platform_driver *drv = to_of_platform_driver(dev->driver);
|
||||
struct platform_driver *drv = to_platform_driver(dev->driver);
|
||||
|
||||
if (dev->driver && drv->shutdown)
|
||||
drv->shutdown(of_dev);
|
||||
|
@ -419,7 +417,7 @@ struct device_attribute ibmebus_bus_device_attrs[] = {
|
|||
static int ibmebus_bus_legacy_suspend(struct device *dev, pm_message_t mesg)
|
||||
{
|
||||
struct platform_device *of_dev = to_platform_device(dev);
|
||||
struct of_platform_driver *drv = to_of_platform_driver(dev->driver);
|
||||
struct platform_driver *drv = to_platform_driver(dev->driver);
|
||||
int ret = 0;
|
||||
|
||||
if (dev->driver && drv->suspend)
|
||||
|
@ -430,7 +428,7 @@ static int ibmebus_bus_legacy_suspend(struct device *dev, pm_message_t mesg)
|
|||
static int ibmebus_bus_legacy_resume(struct device *dev)
|
||||
{
|
||||
struct platform_device *of_dev = to_platform_device(dev);
|
||||
struct of_platform_driver *drv = to_of_platform_driver(dev->driver);
|
||||
struct platform_driver *drv = to_platform_driver(dev->driver);
|
||||
int ret = 0;
|
||||
|
||||
if (dev->driver && drv->resume)
|
||||
|
|
|
@ -29,9 +29,6 @@
|
|||
/* For automatically allocated device IDs */
|
||||
static DEFINE_IDA(platform_devid_ida);
|
||||
|
||||
#define to_platform_driver(drv) (container_of((drv), struct platform_driver, \
|
||||
driver))
|
||||
|
||||
struct device platform_bus = {
|
||||
.init_name = "platform",
|
||||
};
|
||||
|
|
|
@ -713,8 +713,7 @@ static struct attribute_group ehca_dev_attr_grp = {
|
|||
.attrs = ehca_dev_attrs
|
||||
};
|
||||
|
||||
static int ehca_probe(struct platform_device *dev,
|
||||
const struct of_device_id *id)
|
||||
static int ehca_probe(struct platform_device *dev)
|
||||
{
|
||||
struct ehca_shca *shca;
|
||||
const u64 *handle;
|
||||
|
@ -937,7 +936,7 @@ static struct of_device_id ehca_device_table[] =
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, ehca_device_table);
|
||||
|
||||
static struct of_platform_driver ehca_driver = {
|
||||
static struct platform_driver ehca_driver = {
|
||||
.probe = ehca_probe,
|
||||
.remove = ehca_remove,
|
||||
.driver = {
|
||||
|
|
|
@ -98,8 +98,7 @@ static struct ehea_fw_handle_array ehea_fw_handles;
|
|||
static struct ehea_bcmc_reg_array ehea_bcmc_regs;
|
||||
|
||||
|
||||
static int ehea_probe_adapter(struct platform_device *dev,
|
||||
const struct of_device_id *id);
|
||||
static int ehea_probe_adapter(struct platform_device *dev);
|
||||
|
||||
static int ehea_remove(struct platform_device *dev);
|
||||
|
||||
|
@ -112,7 +111,7 @@ static struct of_device_id ehea_device_table[] = {
|
|||
};
|
||||
MODULE_DEVICE_TABLE(of, ehea_device_table);
|
||||
|
||||
static struct of_platform_driver ehea_driver = {
|
||||
static struct platform_driver ehea_driver = {
|
||||
.driver = {
|
||||
.name = "ehea",
|
||||
.owner = THIS_MODULE,
|
||||
|
@ -3251,8 +3250,7 @@ static void ehea_remove_device_sysfs(struct platform_device *dev)
|
|||
device_remove_file(&dev->dev, &dev_attr_remove_port);
|
||||
}
|
||||
|
||||
static int ehea_probe_adapter(struct platform_device *dev,
|
||||
const struct of_device_id *id)
|
||||
static int ehea_probe_adapter(struct platform_device *dev)
|
||||
{
|
||||
struct ehea_adapter *adapter;
|
||||
const u64 *adapter_handle;
|
||||
|
|
|
@ -48,9 +48,6 @@ config OF_IRQ
|
|||
def_bool y
|
||||
depends on !SPARC
|
||||
|
||||
config OF_DEVICE
|
||||
def_bool y
|
||||
|
||||
config OF_I2C
|
||||
def_tristate I2C
|
||||
depends on I2C
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
obj-y = base.o
|
||||
obj-y = base.o device.o platform.o
|
||||
obj-$(CONFIG_OF_FLATTREE) += fdt.o
|
||||
obj-$(CONFIG_OF_PROMTREE) += pdt.o
|
||||
obj-$(CONFIG_OF_ADDRESS) += address.o
|
||||
obj-$(CONFIG_OF_IRQ) += irq.o
|
||||
obj-$(CONFIG_OF_DEVICE) += device.o platform.o
|
||||
obj-$(CONFIG_OF_I2C) += of_i2c.o
|
||||
obj-$(CONFIG_OF_NET) += of_net.o
|
||||
obj-$(CONFIG_OF_SELFTEST) += selftest.o
|
||||
|
|
|
@ -106,8 +106,12 @@ static unsigned int of_bus_default_get_flags(const __be32 *addr)
|
|||
|
||||
static int of_bus_pci_match(struct device_node *np)
|
||||
{
|
||||
/* "vci" is for the /chaos bridge on 1st-gen PCI powermacs */
|
||||
return !strcmp(np->type, "pci") || !strcmp(np->type, "vci");
|
||||
/*
|
||||
* "vci" is for the /chaos bridge on 1st-gen PCI powermacs
|
||||
* "ht" is hypertransport
|
||||
*/
|
||||
return !strcmp(np->type, "pci") || !strcmp(np->type, "vci") ||
|
||||
!strcmp(np->type, "ht");
|
||||
}
|
||||
|
||||
static void of_bus_pci_count_cells(struct device_node *np,
|
||||
|
|
|
@ -812,7 +812,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u32_index);
|
|||
*
|
||||
* @np: device node from which the property value is to be read.
|
||||
* @propname: name of the property to be searched.
|
||||
* @out_value: pointer to return value, modified only if return value is 0.
|
||||
* @out_values: pointer to return value, modified only if return value is 0.
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 8-bit value(s) from
|
||||
|
@ -823,7 +823,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u32_index);
|
|||
* dts entry of array should be like:
|
||||
* property = /bits/ 8 <0x50 0x60 0x70>;
|
||||
*
|
||||
* The out_value is modified only if a valid u8 value can be decoded.
|
||||
* The out_values is modified only if a valid u8 value can be decoded.
|
||||
*/
|
||||
int of_property_read_u8_array(const struct device_node *np,
|
||||
const char *propname, u8 *out_values, size_t sz)
|
||||
|
@ -845,7 +845,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u8_array);
|
|||
*
|
||||
* @np: device node from which the property value is to be read.
|
||||
* @propname: name of the property to be searched.
|
||||
* @out_value: pointer to return value, modified only if return value is 0.
|
||||
* @out_values: pointer to return value, modified only if return value is 0.
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 16-bit value(s) from
|
||||
|
@ -856,7 +856,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u8_array);
|
|||
* dts entry of array should be like:
|
||||
* property = /bits/ 16 <0x5000 0x6000 0x7000>;
|
||||
*
|
||||
* The out_value is modified only if a valid u16 value can be decoded.
|
||||
* The out_values is modified only if a valid u16 value can be decoded.
|
||||
*/
|
||||
int of_property_read_u16_array(const struct device_node *np,
|
||||
const char *propname, u16 *out_values, size_t sz)
|
||||
|
@ -879,7 +879,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u16_array);
|
|||
*
|
||||
* @np: device node from which the property value is to be read.
|
||||
* @propname: name of the property to be searched.
|
||||
* @out_value: pointer to return value, modified only if return value is 0.
|
||||
* @out_values: pointer to return value, modified only if return value is 0.
|
||||
* @sz: number of array elements to read
|
||||
*
|
||||
* Search for a property in a device node and read 32-bit value(s) from
|
||||
|
@ -887,7 +887,7 @@ EXPORT_SYMBOL_GPL(of_property_read_u16_array);
|
|||
* -ENODATA if property does not have a value, and -EOVERFLOW if the
|
||||
* property data isn't large enough.
|
||||
*
|
||||
* The out_value is modified only if a valid u32 value can be decoded.
|
||||
* The out_values is modified only if a valid u32 value can be decoded.
|
||||
*/
|
||||
int of_property_read_u32_array(const struct device_node *np,
|
||||
const char *propname, u32 *out_values,
|
||||
|
|
|
@ -16,6 +16,6 @@ ifneq ($(CONFIG_PCI),)
|
|||
obj-$(CONFIG_USB_CHIPIDEA) += ci_hdrc_pci.o
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_OF_DEVICE),)
|
||||
ifneq ($(CONFIG_OF),)
|
||||
obj-$(CONFIG_USB_CHIPIDEA) += ci_hdrc_imx.o usbmisc_imx.o
|
||||
endif
|
||||
|
|
|
@ -4,12 +4,12 @@
|
|||
#include <linux/platform_device.h>
|
||||
#include <linux/of_platform.h> /* temporary until merge */
|
||||
|
||||
#ifdef CONFIG_OF_DEVICE
|
||||
#include <linux/of.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
struct device;
|
||||
|
||||
#ifdef CONFIG_OF
|
||||
extern const struct of_device_id *of_match_device(
|
||||
const struct of_device_id *matches, const struct device *dev);
|
||||
extern void of_device_make_bus_id(struct device *dev);
|
||||
|
@ -43,7 +43,7 @@ static inline void of_device_node_put(struct device *dev)
|
|||
of_node_put(dev->of_node);
|
||||
}
|
||||
|
||||
#else /* CONFIG_OF_DEVICE */
|
||||
#else /* CONFIG_OF */
|
||||
|
||||
static inline int of_driver_match_device(struct device *dev,
|
||||
struct device_driver *drv)
|
||||
|
@ -67,6 +67,6 @@ static inline const struct of_device_id *of_match_device(
|
|||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif /* CONFIG_OF_DEVICE */
|
||||
#endif /* CONFIG_OF */
|
||||
|
||||
#endif /* _LINUX_OF_DEVICE_H */
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
|
||||
#include <linux/device.h>
|
||||
#include <linux/mod_devicetable.h>
|
||||
|
||||
#ifdef CONFIG_OF_DEVICE
|
||||
#include <linux/pm.h>
|
||||
#include <linux/of_device.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
@ -53,27 +51,6 @@ struct of_dev_auxdata {
|
|||
{ .compatible = _compat, .phys_addr = _phys, .name = _name, \
|
||||
.platform_data = _pdata }
|
||||
|
||||
/**
|
||||
* of_platform_driver - Legacy of-aware driver for platform devices.
|
||||
*
|
||||
* An of_platform_driver driver is attached to a basic platform_device on
|
||||
* the ibm ebus (ibmebus_bus_type).
|
||||
*/
|
||||
struct of_platform_driver
|
||||
{
|
||||
int (*probe)(struct platform_device* dev,
|
||||
const struct of_device_id *match);
|
||||
int (*remove)(struct platform_device* dev);
|
||||
|
||||
int (*suspend)(struct platform_device* dev, pm_message_t state);
|
||||
int (*resume)(struct platform_device* dev);
|
||||
int (*shutdown)(struct platform_device* dev);
|
||||
|
||||
struct device_driver driver;
|
||||
};
|
||||
#define to_of_platform_driver(drv) \
|
||||
container_of(drv,struct of_platform_driver, driver)
|
||||
|
||||
extern const struct of_device_id of_default_bus_match_table[];
|
||||
|
||||
/* Platform drivers register/unregister */
|
||||
|
@ -82,7 +59,6 @@ extern struct platform_device *of_device_alloc(struct device_node *np,
|
|||
struct device *parent);
|
||||
extern struct platform_device *of_find_device_by_node(struct device_node *np);
|
||||
|
||||
#ifdef CONFIG_OF_ADDRESS /* device reg helpers depend on OF_ADDRESS */
|
||||
/* Platform devices and busses creation */
|
||||
extern struct platform_device *of_platform_device_create(struct device_node *np,
|
||||
const char *bus_id,
|
||||
|
@ -91,17 +67,12 @@ extern struct platform_device *of_platform_device_create(struct device_node *np,
|
|||
extern int of_platform_bus_probe(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
struct device *parent);
|
||||
#ifdef CONFIG_OF_ADDRESS
|
||||
extern int of_platform_populate(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
const struct of_dev_auxdata *lookup,
|
||||
struct device *parent);
|
||||
#endif /* CONFIG_OF_ADDRESS */
|
||||
|
||||
#endif /* CONFIG_OF_DEVICE */
|
||||
|
||||
#if !defined(CONFIG_OF_ADDRESS)
|
||||
struct of_dev_auxdata;
|
||||
struct device_node;
|
||||
#else
|
||||
static inline int of_platform_populate(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
const struct of_dev_auxdata *lookup,
|
||||
|
@ -109,6 +80,6 @@ static inline int of_platform_populate(struct device_node *root,
|
|||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
#endif /* !CONFIG_OF_ADDRESS */
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_OF_PLATFORM_H */
|
||||
|
|
|
@ -180,6 +180,9 @@ struct platform_driver {
|
|||
const struct platform_device_id *id_table;
|
||||
};
|
||||
|
||||
#define to_platform_driver(drv) (container_of((drv), struct platform_driver, \
|
||||
driver))
|
||||
|
||||
/*
|
||||
* use a macro to avoid include chaining to get THIS_MODULE
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче