The gpio subsystem is happier if the gpiochip is given a parent, and
if it doesn't have a fixed base gpio number. While we're in here,
use the fact that the firmware node is the parent to locate it,
and use the devm_ version of rpi_firmware_get.
Signed-off-by: Phil Elwell <phil@raspberrypi.com>
struct brcmvirt_gpio *ucb;
u32 gpiovirtbuf;
- fw_node = of_parse_phandle(np, "firmware", 0);
+ fw_node = of_get_parent(np);
if (!fw_node) {
dev_err(dev, "Missing firmware node\n");
return -ENOENT;
}
- fw = rpi_firmware_get(fw_node);
+ fw = devm_rpi_firmware_get(&pdev->dev, fw_node);
+ of_node_put(fw_node);
if (!fw)
return -EPROBE_DEFER;
}
ucb->bus_addr = 0;
}
+ ucb->gc.parent = dev;
ucb->gc.label = MODULE_NAME;
ucb->gc.owner = THIS_MODULE;
- //ucb->gc.dev = dev;
- ucb->gc.base = 100;
+ ucb->gc.base = -1;
ucb->gc.ngpio = NUM_GPIO;
ucb->gc.direction_input = brcmvirt_gpio_dir_in;