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:
		
						commit
						74b9272bbe
					
				
							
								
								
									
										49
									
								
								Documentation/devicetree/bindings/mfd/palmas.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								Documentation/devicetree/bindings/mfd/palmas.txt
									
									
									
									
									
										Normal file
									
								
							| @ -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"; | ||||
| 		.... | ||||
| 	}; | ||||
| } | ||||
							
								
								
									
										72
									
								
								Documentation/devicetree/bindings/regulator/palmas-pmic.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								Documentation/devicetree/bindings/regulator/palmas-pmic.txt
									
									
									
									
									
										Normal file
									
								
							| @ -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 | ||||
|  */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user