Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit ffc20581 authored by Gabor Juhos's avatar Gabor Juhos Committed by Paul Burton
Browse files

MIPS: ath79: enable uart during early_prink



This patch ensures, that the pinmux register is properly setup for the
boot console UART when early_printk is enabled.

[paul.burton@mips.com:
  - s/poinmux/pinmux/
  - s/uart/UART/
  - Drop extraneous parentheses.]

Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
Signed-off-by: default avatarJohn Crispin <john@phrozen.org>
Signed-off-by: default avatarPaul Burton <paul.burton@mips.com>
Cc: James Hogan <jhogan@kernel.org>
Cc: Ralf Baechle <ralf@linux-mips.org>
Cc: linux-mips@linux-mips.org
parent e1634370
Loading
Loading
Loading
Loading
+43 −1
Original line number Original line Diff line number Diff line
@@ -60,6 +60,46 @@ static void prom_putchar_dummy(char ch)
	/* nothing to do */
	/* nothing to do */
}
}


static void prom_enable_uart(u32 id)
{
	void __iomem *gpio_base;
	u32 uart_en;
	u32 t;

	switch (id) {
	case REV_ID_MAJOR_AR71XX:
		uart_en = AR71XX_GPIO_FUNC_UART_EN;
		break;

	case REV_ID_MAJOR_AR7240:
	case REV_ID_MAJOR_AR7241:
	case REV_ID_MAJOR_AR7242:
		uart_en = AR724X_GPIO_FUNC_UART_EN;
		break;

	case REV_ID_MAJOR_AR913X:
		uart_en = AR913X_GPIO_FUNC_UART_EN;
		break;

	case REV_ID_MAJOR_AR9330:
	case REV_ID_MAJOR_AR9331:
		uart_en = AR933X_GPIO_FUNC_UART_EN;
		break;

	case REV_ID_MAJOR_AR9341:
	case REV_ID_MAJOR_AR9342:
	case REV_ID_MAJOR_AR9344:
		/* TODO */
	default:
		return;
	}

	gpio_base = (void __iomem *)KSEG1ADDR(AR71XX_GPIO_BASE);
	t = __raw_readl(gpio_base + AR71XX_GPIO_REG_FUNC);
	t |= uart_en;
	__raw_writel(t, gpio_base + AR71XX_GPIO_REG_FUNC);
}

static void prom_putchar_init(void)
static void prom_putchar_init(void)
{
{
	void __iomem *base;
	void __iomem *base;
@@ -94,8 +134,10 @@ static void prom_putchar_init(void)


	default:
	default:
		_prom_putchar = prom_putchar_dummy;
		_prom_putchar = prom_putchar_dummy;
		break;
		return;
	}
	}

	prom_enable_uart(id);
}
}


void prom_putchar(char ch)
void prom_putchar(char ch)