1 // SPDX-License-Identifier: GPL-2.0 1 2 /* 3 * MPC5200 PSC serial console support. 4 * 5 * Author: Grant Likely <grant.likely@secretla 6 * 7 * Copyright (c) 2007 Secret Lab Technologies 8 * Copyright (c) 2007 Freescale Semiconductor, 9 * 10 * It is assumed that the firmware (or the pla 11 * up the port. 12 */ 13 14 #include "types.h" 15 #include "io.h" 16 #include "ops.h" 17 18 /* Programmable Serial Controller (PSC) status 19 #define MPC52xx_PSC_SR 0x04 20 #define MPC52xx_PSC_SR_RXRDY 0x0100 21 #define MPC52xx_PSC_SR_RXFULL 0x0200 22 #define MPC52xx_PSC_SR_TXRDY 0x0400 23 #define MPC52xx_PSC_SR_TXEMP 0x0800 24 25 #define MPC52xx_PSC_BUFFER 0x0C 26 27 static void *psc; 28 29 static int psc_open(void) 30 { 31 /* Assume the firmware has already con 32 * uart mode */ 33 return 0; 34 } 35 36 static void psc_putc(unsigned char c) 37 { 38 while (!(in_be16(psc + MPC52xx_PSC_SR) 39 out_8(psc + MPC52xx_PSC_BUFFER, c); 40 } 41 42 static unsigned char psc_tstc(void) 43 { 44 return (in_be16(psc + MPC52xx_PSC_SR) 45 } 46 47 static unsigned char psc_getc(void) 48 { 49 while (!(in_be16(psc + MPC52xx_PSC_SR) 50 return in_8(psc + MPC52xx_PSC_BUFFER); 51 } 52 53 int mpc5200_psc_console_init(void *devp, struc 54 { 55 /* Get the base address of the psc reg 56 if (dt_get_virtual_reg(devp, &psc, 1) 57 return -1; 58 59 scdp->open = psc_open; 60 scdp->putc = psc_putc; 61 scdp->getc = psc_getc; 62 scdp->tstc = psc_tstc; 63 64 return 0; 65 } 66
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.