mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-08-22 05:06:39 -04:00
Merge branch 'agust@denx.de' of git://git.denx.de/u-boot-staging
This commit is contained in:
commit
9fe2cfb43a
@ -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)
|
void *pci_map_bar(pci_dev_t pdev, int bar, int flags)
|
||||||
{
|
{
|
||||||
pci_addr_t pci_bus_addr;
|
pci_addr_t pci_bus_addr;
|
||||||
pci_addr_t bar_response;
|
u32 bar_response;
|
||||||
|
|
||||||
/* read BAR address */
|
/* read BAR address */
|
||||||
pci_read_config_dword(pdev, bar, &bar_response);
|
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
|
* 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,
|
pci_addr_t mem,
|
||||||
unsigned long command)
|
unsigned long command)
|
||||||
{
|
{
|
||||||
pci_addr_t bar_response;
|
u32 bar_response;
|
||||||
unsigned int old_command;
|
unsigned int old_command;
|
||||||
pci_addr_t bar_value;
|
pci_addr_t bar_value;
|
||||||
pci_size_t bar_size;
|
pci_size_t bar_size;
|
||||||
|
@ -89,7 +89,7 @@ void pciauto_setup_device(struct pci_controller *hose,
|
|||||||
struct pci_region *prefetch,
|
struct pci_region *prefetch,
|
||||||
struct pci_region *io)
|
struct pci_region *io)
|
||||||
{
|
{
|
||||||
pci_addr_t bar_response;
|
u32 bar_response;
|
||||||
pci_size_t bar_size;
|
pci_size_t bar_size;
|
||||||
u16 cmdstat = 0;
|
u16 cmdstat = 0;
|
||||||
int bar, bar_nr = 0;
|
int bar, bar_nr = 0;
|
||||||
|
@ -94,4 +94,13 @@ int gpio_get_value(unsigned gpio);
|
|||||||
*/
|
*/
|
||||||
int gpio_set_value(unsigned gpio, int value);
|
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_ */
|
#endif /* _ASM_GENERIC_GPIO_H_ */
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
* MA 02111-1307 USA
|
* MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef __fdtdec_h
|
||||||
|
#define __fdtdec_h
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This file contains convenience functions for decoding useful and
|
* 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 u8 *fdtdec_locate_byte_array(const void *blob, int node,
|
||||||
const char *prop_name, int count);
|
const char *prop_name, int count);
|
||||||
|
#endif
|
||||||
|
27
lib/fdtdec.c
27
lib/fdtdec.c
@ -80,11 +80,16 @@ fdt_addr_t fdtdec_get_addr(const void *blob, int node,
|
|||||||
const fdt_addr_t *cell;
|
const fdt_addr_t *cell;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
debug("get_addr: %s\n", prop_name);
|
debug("%s: %s: ", __func__, prop_name);
|
||||||
cell = fdt_getprop(blob, node, prop_name, &len);
|
cell = fdt_getprop(blob, node, prop_name, &len);
|
||||||
if (cell && (len == sizeof(fdt_addr_t) ||
|
if (cell && (len == sizeof(fdt_addr_t) ||
|
||||||
len == sizeof(fdt_addr_t) * 2))
|
len == sizeof(fdt_addr_t) * 2)) {
|
||||||
return fdt_addr_to_cpu(*cell);
|
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;
|
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;
|
const s32 *cell;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
debug("get_size: %s\n", prop_name);
|
debug("%s: %s: ", __func__, prop_name);
|
||||||
cell = fdt_getprop(blob, node, prop_name, &len);
|
cell = fdt_getprop(blob, node, prop_name, &len);
|
||||||
if (cell && len >= sizeof(s32))
|
if (cell && len >= sizeof(s32)) {
|
||||||
return fdt32_to_cpu(cell[0]);
|
s32 val = fdt32_to_cpu(cell[0]);
|
||||||
|
|
||||||
|
debug("%#x (%d)\n", val, val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
debug("(not found)\n");
|
||||||
return default_val;
|
return default_val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,6 +339,7 @@ int fdtdec_lookup_phandle(const void *blob, int node, const char *prop_name)
|
|||||||
const u32 *phandle;
|
const u32 *phandle;
|
||||||
int lookup;
|
int lookup;
|
||||||
|
|
||||||
|
debug("%s: %s\n", __func__, prop_name);
|
||||||
phandle = fdt_getprop(blob, node, prop_name, NULL);
|
phandle = fdt_getprop(blob, node, prop_name, NULL);
|
||||||
if (!phandle)
|
if (!phandle)
|
||||||
return -FDT_ERR_NOTFOUND;
|
return -FDT_ERR_NOTFOUND;
|
||||||
@ -428,7 +439,7 @@ static int fdtdec_decode_gpios(const void *blob, int node,
|
|||||||
assert(max_count > 0);
|
assert(max_count > 0);
|
||||||
prop = fdt_get_property(blob, node, prop_name, &len);
|
prop = fdt_get_property(blob, node, prop_name, &len);
|
||||||
if (!prop) {
|
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;
|
return -FDT_ERR_NOTFOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -437,7 +448,7 @@ static int fdtdec_decode_gpios(const void *blob, int node,
|
|||||||
cell = (u32 *)prop->data;
|
cell = (u32 *)prop->data;
|
||||||
len /= sizeof(u32) * 3; /* 3 cells per GPIO record */
|
len /= sizeof(u32) * 3; /* 3 cells per GPIO record */
|
||||||
if (len > max_count) {
|
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);
|
"property '%s'\n", __func__, prop_name);
|
||||||
return -FDT_ERR_BADLAYOUT;
|
return -FDT_ERR_BADLAYOUT;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user