linux/arch/mips/lantiq/early_printk.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0-only
   2/*
   3 *
   4 *  Copyright (C) 2010 John Crispin <john@phrozen.org>
   5 */
   6
   7#include <linux/cpu.h>
   8#include <lantiq_soc.h>
   9#include <asm/setup.h>
  10
  11#define ASC_BUF         1024
  12#define LTQ_ASC_FSTAT   ((u32 *)(LTQ_EARLY_ASC + 0x0048))
  13#ifdef __BIG_ENDIAN
  14#define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
  15#else
  16#define LTQ_ASC_TBUF    ((u32 *)(LTQ_EARLY_ASC + 0x0020))
  17#endif
  18#define TXMASK          0x3F00
  19#define TXOFFSET        8
  20
  21void prom_putchar(char c)
  22{
  23        unsigned long flags;
  24
  25        local_irq_save(flags);
  26        do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
  27        if (c == '\n')
  28                ltq_w8('\r', LTQ_ASC_TBUF);
  29        ltq_w8(c, LTQ_ASC_TBUF);
  30        local_irq_restore(flags);
  31}
  32