cregit-Linux how code gets into the kernel

Release 4.14 arch/mips/ath79/early_printk.c

Directory: arch/mips/ath79
/*
 *  Atheros AR7XXX/AR9XXX SoC early printk support
 *
 *  Copyright (C) 2008-2011 Gabor Juhos <juhosg@openwrt.org>
 *  Copyright (C) 2008 Imre Kaloz <kaloz@openwrt.org>
 *
 *  This program is free software; you can redistribute it and/or modify it
 *  under the terms of the GNU General Public License version 2 as published
 *  by the Free Software Foundation.
 */

#include <linux/io.h>
#include <linux/errno.h>
#include <linux/serial_reg.h>
#include <asm/addrspace.h>

#include <asm/mach-ath79/ath79.h>
#include <asm/mach-ath79/ar71xx_regs.h>
#include <asm/mach-ath79/ar933x_uart.h>


static void (*_prom_putchar) (unsigned char);


static inline void prom_putchar_wait(void __iomem *reg, u32 mask, u32 val) { u32 t; do { t = __raw_readl(reg); if ((t & mask) == val) break; } while (1); }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos47100.00%2100.00%
Total47100.00%2100.00%

#define BOTH_EMPTY (UART_LSR_TEMT | UART_LSR_THRE)
static void prom_putchar_ar71xx(unsigned char ch) { void __iomem *base = (void __iomem *)(KSEG1ADDR(AR71XX_UART_BASE)); prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY); __raw_writel(ch, base + UART_TX * 4); prom_putchar_wait(base + UART_LSR * 4, BOTH_EMPTY, BOTH_EMPTY); }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos6093.75%266.67%
Matthias Schiffer46.25%133.33%
Total64100.00%3100.00%


static void prom_putchar_ar933x(unsigned char ch) { void __iomem *base = (void __iomem *)(KSEG1ADDR(AR933X_UART_BASE)); prom_putchar_wait(base + AR933X_UART_DATA_REG, AR933X_UART_DATA_TX_CSR, AR933X_UART_DATA_TX_CSR); __raw_writel(AR933X_UART_DATA_TX_CSR | ch, base + AR933X_UART_DATA_REG); prom_putchar_wait(base + AR933X_UART_DATA_REG, AR933X_UART_DATA_TX_CSR, AR933X_UART_DATA_TX_CSR); }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos60100.00%2100.00%
Total60100.00%2100.00%


static void prom_putchar_dummy(unsigned char ch) { /* nothing to do */ }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos11100.00%1100.00%
Total11100.00%1100.00%


static void prom_putchar_init(void) { void __iomem *base; u32 id; base = (void __iomem *)(KSEG1ADDR(AR71XX_RESET_BASE)); id = __raw_readl(base + AR71XX_RESET_REG_REV_ID); id &= REV_ID_MAJOR_MASK; switch (id) { case REV_ID_MAJOR_AR71XX: case REV_ID_MAJOR_AR7240: case REV_ID_MAJOR_AR7241: case REV_ID_MAJOR_AR7242: case REV_ID_MAJOR_AR913X: case REV_ID_MAJOR_AR9341: case REV_ID_MAJOR_AR9342: case REV_ID_MAJOR_AR9344: case REV_ID_MAJOR_QCA9556: case REV_ID_MAJOR_QCA9558: _prom_putchar = prom_putchar_ar71xx; break; case REV_ID_MAJOR_AR9330: case REV_ID_MAJOR_AR9331: _prom_putchar = prom_putchar_ar933x; break; default: _prom_putchar = prom_putchar_dummy; break; } }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos101100.00%3100.00%
Total101100.00%3100.00%


void prom_putchar(unsigned char ch) { if (!_prom_putchar) prom_putchar_init(); _prom_putchar(ch); }

Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos22100.00%2100.00%
Total22100.00%2100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Gabor Juhos33497.66%480.00%
Matthias Schiffer82.34%120.00%
Total342100.00%5100.00%
Directory: arch/mips/ath79
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.