/* SPDX-License-Identifier: GPL-2.0 */1/*2* Copyright 2005, 2007 Simtec Electronics3* http://armlinux.simtec.co.uk/4* Ben Dooks <[email protected]>5*/67#include <linux/serial_s3c.h>89/* The S5PV210/S5PC110 implementations are as belows. */1011.macro fifo_level_s5pv210 rd, rx12ldr \rd, [\rx, # S3C2410_UFSTAT]13ARM_BE8(rev \rd, \rd)14and \rd, \rd, #S5PV210_UFSTAT_TXMASK15.endm1617.macro fifo_full_s5pv210 rd, rx18ldr \rd, [\rx, # S3C2410_UFSTAT]19ARM_BE8(rev \rd, \rd)20tst \rd, #S5PV210_UFSTAT_TXFULL21.endm2223/* The S3C2440 implementations are used by default as they are the24* most widely re-used */2526.macro fifo_level_s3c2440 rd, rx27ldr \rd, [\rx, # S3C2410_UFSTAT]28ARM_BE8(rev \rd, \rd)29and \rd, \rd, #S3C2440_UFSTAT_TXMASK30.endm3132#ifndef fifo_level33#define fifo_level fifo_level_s3c244034#endif3536.macro fifo_full_s3c2440 rd, rx37ldr \rd, [\rx, # S3C2410_UFSTAT]38ARM_BE8(rev \rd, \rd)39tst \rd, #S3C2440_UFSTAT_TXFULL40.endm4142#ifndef fifo_full43#define fifo_full fifo_full_s3c244044#endif4546.macro senduart,rd,rx47strb \rd, [\rx, # S3C2410_UTXH]48.endm4950.macro busyuart, rd, rx51ldr \rd, [\rx, # S3C2410_UFCON]52ARM_BE8(rev \rd, \rd)53tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?54beq 1001f @55@ FIFO enabled...561003:57fifo_full \rd, \rx58bne 1003b59b 1002f60611001:62@ busy waiting for non fifo63ldr \rd, [\rx, # S3C2410_UTRSTAT]64ARM_BE8(rev \rd, \rd)65tst \rd, #S3C2410_UTRSTAT_TXFE66beq 1001b67681002: @ exit busyuart69.endm7071.macro waituartcts,rd,rx72.endm7374.macro waituarttxrdy,rd,rx75ldr \rd, [\rx, # S3C2410_UFCON]76ARM_BE8(rev \rd, \rd)77tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled?78beq 1001f @79@ FIFO enabled...801003:81fifo_level \rd, \rx82teq \rd, #083bne 1003b84b 1002f851001:86@ idle waiting for non fifo87ldr \rd, [\rx, # S3C2410_UTRSTAT]88ARM_BE8(rev \rd, \rd)89tst \rd, #S3C2410_UTRSTAT_TXFE90beq 1001b91921002: @ exit busyuart93.endm949596