mirror of
https://github.com/brain-hackers/u-boot-brain
synced 2024-10-01 17:10:42 +09:00
tegra2: Use new GPIO APIs in gpio_config_uart()
... rather than open-coding the register accesses. However, gpio_request() typically stores the "label" parameter in a global data structure. This causes problems when called from gpio_config_uart(), since the code is running before relocation. To solve this, pass a NULL string to gpio_request(), and modify gpio_request() not to touch the string if it's NULL. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org> Tested-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Warren <twarren@nvidia.com>
This commit is contained in:
parent
d5ef19b9b3
commit
5fac236a97
@ -37,23 +37,9 @@
|
|||||||
*/
|
*/
|
||||||
static void gpio_config_uart_seaboard(void)
|
static void gpio_config_uart_seaboard(void)
|
||||||
{
|
{
|
||||||
int gp = GPIO_PI3;
|
|
||||||
struct gpio_ctlr *gpio = (struct gpio_ctlr *)NV_PA_GPIO_BASE;
|
|
||||||
struct gpio_ctlr_bank *bank = &gpio->gpio_bank[GPIO_BANK(gp)];
|
|
||||||
u32 val;
|
|
||||||
|
|
||||||
/* Enable UART via GPIO_PI3 (port 8, bit 3) so serial console works */
|
/* Enable UART via GPIO_PI3 (port 8, bit 3) so serial console works */
|
||||||
val = readl(&bank->gpio_config[GPIO_PORT(gp)]);
|
gpio_request(GPIO_PI3, NULL);
|
||||||
val |= 1 << GPIO_BIT(gp);
|
gpio_direction_output(GPIO_PI3, 0);
|
||||||
writel(val, &bank->gpio_config[GPIO_PORT(gp)]);
|
|
||||||
|
|
||||||
val = readl(&bank->gpio_out[GPIO_PORT(gp)]);
|
|
||||||
val &= ~(1 << GPIO_BIT(gp));
|
|
||||||
writel(val, &bank->gpio_out[GPIO_PORT(gp)]);
|
|
||||||
|
|
||||||
val = readl(&bank->gpio_dir_out[GPIO_PORT(gp)]);
|
|
||||||
val |= 1 << GPIO_BIT(gp);
|
|
||||||
writel(val, &bank->gpio_dir_out[GPIO_PORT(gp)]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void gpio_config_uart(void)
|
void gpio_config_uart(void)
|
||||||
|
@ -146,8 +146,10 @@ int gpio_request(int gp, const char *label)
|
|||||||
if (gp >= MAX_NUM_GPIOS)
|
if (gp >= MAX_NUM_GPIOS)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (label != NULL) {
|
||||||
strncpy(gpio_names[gp].name, label, GPIO_NAME_SIZE);
|
strncpy(gpio_names[gp].name, label, GPIO_NAME_SIZE);
|
||||||
gpio_names[gp].name[GPIO_NAME_SIZE - 1] = '\0';
|
gpio_names[gp].name[GPIO_NAME_SIZE - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
/* Configure as a GPIO */
|
/* Configure as a GPIO */
|
||||||
set_config(gp, 1);
|
set_config(gp, 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user