u-boot/arch/arm/mach-bcm283x/include/mach/gpio.h
Alexander Graf caf2233b28 bcm283x: Add pinctrl driver
The bcm283x family of SoCs have a GPIO controller that also acts as
pinctrl controller.

This patch introduces a new pinctrl driver that can actually properly mux
devices into their device tree defined pin states and is now the primary
owner of the gpio device. The previous GPIO driver gets moved into a
subdevice of the pinctrl driver, bound to the same OF node.

That way whenever a device asks for pinctrl support, it gets it
automatically from the pinctrl driver and GPIO support is still available
in the normal command line phase.

Signed-off-by: Alexander Graf <agraf@suse.de>
2018-01-28 12:27:32 -05:00

64 lines
1.3 KiB
C

/*
* Copyright (C) 2012 Vikram Narayananan
* <vikram186@gmail.com>
* (C) Copyright 2012,2015 Stephen Warren
*
* SPDX-License-Identifier: GPL-2.0+
*/
#ifndef _BCM2835_GPIO_H_
#define _BCM2835_GPIO_H_
#define BCM2835_GPIO_COUNT 54
#define BCM2835_GPIO_FSEL_MASK 0x7
#define BCM2835_GPIO_INPUT 0x0
#define BCM2835_GPIO_OUTPUT 0x1
#define BCM2835_GPIO_ALT0 0x4
#define BCM2835_GPIO_ALT1 0x5
#define BCM2835_GPIO_ALT2 0x6
#define BCM2835_GPIO_ALT3 0x7
#define BCM2835_GPIO_ALT4 0x3
#define BCM2835_GPIO_ALT5 0x2
#define BCM2835_GPIO_COMMON_BANK(gpio) ((gpio < 32) ? 0 : 1)
#define BCM2835_GPIO_COMMON_SHIFT(gpio) (gpio & 0x1f)
#define BCM2835_GPIO_FSEL_BANK(gpio) (gpio / 10)
#define BCM2835_GPIO_FSEL_SHIFT(gpio) ((gpio % 10) * 3)
struct bcm2835_gpio_regs {
u32 gpfsel[6];
u32 reserved1;
u32 gpset[2];
u32 reserved2;
u32 gpclr[2];
u32 reserved3;
u32 gplev[2];
u32 reserved4;
u32 gpeds[2];
u32 reserved5;
u32 gpren[2];
u32 reserved6;
u32 gpfen[2];
u32 reserved7;
u32 gphen[2];
u32 reserved8;
u32 gplen[2];
u32 reserved9;
u32 gparen[2];
u32 reserved10;
u32 gppud;
u32 gppudclk[2];
};
/**
* struct bcm2835_gpio_platdata - GPIO platform description
*
* @base: Base address of GPIO controller
*/
struct bcm2835_gpio_platdata {
unsigned long base;
};
#endif /* _BCM2835_GPIO_H_ */