diff options
| -rw-r--r-- | drivers/pci/pci.c | 6 | ||||
| -rw-r--r-- | drivers/pci/pci_auto.c | 2 | ||||
| -rw-r--r-- | include/asm-generic/gpio.h | 9 | ||||
| -rw-r--r-- | include/fdtdec.h | 3 | ||||
| -rw-r--r-- | lib/fdtdec.c | 27 | 
5 files changed, 35 insertions, 12 deletions
| diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 2a6d0a759..d864f137f 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -118,11 +118,11 @@ PCI_WRITE_VIA_DWORD_OP(word, u16, 0x02, 0x0000ffff)  void *pci_map_bar(pci_dev_t pdev, int bar, int flags)  {  	pci_addr_t pci_bus_addr; -	pci_addr_t bar_response; +	u32 bar_response;  	/* read BAR address */  	pci_read_config_dword(pdev, bar, &bar_response); -	pci_bus_addr = bar_response & ~0xf; +	pci_bus_addr = (pci_addr_t)(bar_response & ~0xf);  	/*  	 * Pass "0" as the length argument to pci_bus_to_virt.  The arg @@ -389,7 +389,7 @@ int pci_hose_config_device(struct pci_controller *hose,  			   pci_addr_t mem,  			   unsigned long command)  { -	pci_addr_t bar_response; +	u32 bar_response;  	unsigned int old_command;  	pci_addr_t bar_value;  	pci_size_t bar_size; diff --git a/drivers/pci/pci_auto.c b/drivers/pci/pci_auto.c index ae61e2490..cd78030cd 100644 --- a/drivers/pci/pci_auto.c +++ b/drivers/pci/pci_auto.c @@ -89,7 +89,7 @@ void pciauto_setup_device(struct pci_controller *hose,  			  struct pci_region *prefetch,  			  struct pci_region *io)  { -	pci_addr_t bar_response; +	u32 bar_response;  	pci_size_t bar_size;  	u16 cmdstat = 0;  	int bar, bar_nr = 0; diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index c19e16cd2..23c964940 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h @@ -94,4 +94,13 @@ int gpio_get_value(unsigned gpio);   */  int gpio_set_value(unsigned gpio, int value); +/** + * Request a gpio. This should be called before any of the other functions + * are used on this gpio. + * + * @param gp	GPIO number + * @param label	User label for this GPIO + * @return 0 if ok, -1 on error + */ +int gpio_request(unsigned gpio, const char *label);  #endif	/* _ASM_GENERIC_GPIO_H_ */ diff --git a/include/fdtdec.h b/include/fdtdec.h index 474a4b90e..0b140752f 100644 --- a/include/fdtdec.h +++ b/include/fdtdec.h @@ -19,6 +19,8 @@   * MA 02111-1307 USA   */ +#ifndef __fdtdec_h +#define __fdtdec_h  /*   * This file contains convenience functions for decoding useful and @@ -383,3 +385,4 @@ int fdtdec_get_byte_array(const void *blob, int node, const char *prop_name,   */  const u8 *fdtdec_locate_byte_array(const void *blob, int node,  			     const char *prop_name, int count); +#endif diff --git a/lib/fdtdec.c b/lib/fdtdec.c index 69c63db4b..4c23f458f 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -80,11 +80,16 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,  	const fdt_addr_t *cell;  	int len; -	debug("get_addr: %s\n", prop_name); +	debug("%s: %s: ", __func__, prop_name);  	cell = fdt_getprop(blob, node, prop_name, &len);  	if (cell && (len == sizeof(fdt_addr_t) || -			len == sizeof(fdt_addr_t) * 2)) -		return fdt_addr_to_cpu(*cell); +			len == sizeof(fdt_addr_t) * 2)) { +		fdt_addr_t addr = fdt_addr_to_cpu(*cell); + +		debug("%p\n", (void *)addr); +		return addr; +	} +	debug("(not found)\n");  	return FDT_ADDR_T_NONE;  } @@ -94,10 +99,15 @@ s32 fdtdec_get_int(const void *blob, int node, const char *prop_name,  	const s32 *cell;  	int len; -	debug("get_size: %s\n", prop_name); +	debug("%s: %s: ", __func__, prop_name);  	cell = fdt_getprop(blob, node, prop_name, &len); -	if (cell && len >= sizeof(s32)) -		return fdt32_to_cpu(cell[0]); +	if (cell && len >= sizeof(s32)) { +		s32 val = fdt32_to_cpu(cell[0]); + +		debug("%#x (%d)\n", val, val); +		return val; +	} +	debug("(not found)\n");  	return default_val;  } @@ -329,6 +339,7 @@ int fdtdec_lookup_phandle(const void *blob, int node, const char *prop_name)  	const u32 *phandle;  	int lookup; +	debug("%s: %s\n", __func__, prop_name);  	phandle = fdt_getprop(blob, node, prop_name, NULL);  	if (!phandle)  		return -FDT_ERR_NOTFOUND; @@ -428,7 +439,7 @@ static int fdtdec_decode_gpios(const void *blob, int node,  	assert(max_count > 0);  	prop = fdt_get_property(blob, node, prop_name, &len);  	if (!prop) { -		debug("FDT: %s: property '%s' missing\n", __func__, prop_name); +		debug("%s: property '%s' missing\n", __func__, prop_name);  		return -FDT_ERR_NOTFOUND;  	} @@ -437,7 +448,7 @@ static int fdtdec_decode_gpios(const void *blob, int node,  	cell = (u32 *)prop->data;  	len /= sizeof(u32) * 3;		/* 3 cells per GPIO record */  	if (len > max_count) { -		debug("FDT: %s: too many GPIOs / cells for " +		debug(" %s: too many GPIOs / cells for "  			"property '%s'\n", __func__, prop_name);  		return -FDT_ERR_BADLAYOUT;  	} |