@ -10,6 +10,7 @@
# include <errno.h>
# include <errno.h>
# include <asm/gpio.h>
# include <asm/gpio.h>
# include <asm/io.h>
# include <asm/io.h>
# include <fdtdec.h>
struct bcm2835_gpios {
struct bcm2835_gpios {
struct bcm2835_gpio_regs * reg ;
struct bcm2835_gpio_regs * reg ;
@ -118,9 +119,32 @@ static int bcm2835_gpio_probe(struct udevice *dev)
return 0 ;
return 0 ;
}
}
# if CONFIG_IS_ENABLED(OF_CONTROL)
static const struct udevice_id bcm2835_gpio_id [ ] = {
{ . compatible = " brcm,bcm2835-gpio " } ,
{ }
} ;
static int bcm2835_gpio_ofdata_to_platdata ( struct udevice * dev )
{
struct bcm2835_gpio_platdata * plat = dev_get_platdata ( dev ) ;
fdt_addr_t addr ;
addr = dev_get_addr ( dev ) ;
if ( addr = = FDT_ADDR_T_NONE )
return - EINVAL ;
plat - > base = addr ;
return 0 ;
}
# endif
U_BOOT_DRIVER ( gpio_bcm2835 ) = {
U_BOOT_DRIVER ( gpio_bcm2835 ) = {
. name = " gpio_bcm2835 " ,
. name = " gpio_bcm2835 " ,
. id = UCLASS_GPIO ,
. id = UCLASS_GPIO ,
. of_match = of_match_ptr ( bcm2835_gpio_id ) ,
. ofdata_to_platdata = of_match_ptr ( bcm2835_gpio_ofdata_to_platdata ) ,
. platdata_auto_alloc_size = sizeof ( struct bcm2835_gpio_platdata ) ,
. ops = & gpio_bcm2835_ops ,
. ops = & gpio_bcm2835_ops ,
. probe = bcm2835_gpio_probe ,
. probe = bcm2835_gpio_probe ,
. flags = DM_FLAG_PRE_RELOC ,
. flags = DM_FLAG_PRE_RELOC ,