1/* arch/arm/plat-samsung/include/plat/debug-macro.S 2 * 3 * Copyright 2005, 2007 Simtec Electronics 4 * http://armlinux.simtec.co.uk/ 5 * Ben Dooks <ben@simtec.co.uk> 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10*/ 11 12#include <linux/serial_s3c.h> 13 14/* The S5PV210/S5PC110 implementations are as belows. */ 15 16 .macro fifo_level_s5pv210 rd, rx 17 ldr \rd, [\rx, # S3C2410_UFSTAT] 18 and \rd, \rd, #S5PV210_UFSTAT_TXMASK 19 .endm 20 21 .macro fifo_full_s5pv210 rd, rx 22 ldr \rd, [\rx, # S3C2410_UFSTAT] 23 tst \rd, #S5PV210_UFSTAT_TXFULL 24 .endm 25 26/* The S3C2440 implementations are used by default as they are the 27 * most widely re-used */ 28 29 .macro fifo_level_s3c2440 rd, rx 30 ldr \rd, [\rx, # S3C2410_UFSTAT] 31 and \rd, \rd, #S3C2440_UFSTAT_TXMASK 32 .endm 33 34#ifndef fifo_level 35#define fifo_level fifo_level_s3c2440 36#endif 37 38 .macro fifo_full_s3c2440 rd, rx 39 ldr \rd, [\rx, # S3C2410_UFSTAT] 40 tst \rd, #S3C2440_UFSTAT_TXFULL 41 .endm 42 43#ifndef fifo_full 44#define fifo_full fifo_full_s3c2440 45#endif 46 47 .macro senduart,rd,rx 48 strb \rd, [\rx, # S3C2410_UTXH] 49 .endm 50 51 .macro busyuart, rd, rx 52 ldr \rd, [\rx, # S3C2410_UFCON] 53 tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? 54 beq 1001f @ 55 @ FIFO enabled... 561003: 57 fifo_full \rd, \rx 58 bne 1003b 59 b 1002f 60 611001: 62 @ busy waiting for non fifo 63 ldr \rd, [\rx, # S3C2410_UTRSTAT] 64 tst \rd, #S3C2410_UTRSTAT_TXFE 65 beq 1001b 66 671002: @ exit busyuart 68 .endm 69 70 .macro waituart,rd,rx 71 ldr \rd, [\rx, # S3C2410_UFCON] 72 tst \rd, #S3C2410_UFCON_FIFOMODE @ fifo enabled? 73 beq 1001f @ 74 @ FIFO enabled... 751003: 76 fifo_level \rd, \rx 77 teq \rd, #0 78 bne 1003b 79 b 1002f 801001: 81 @ idle waiting for non fifo 82 ldr \rd, [\rx, # S3C2410_UTRSTAT] 83 tst \rd, #S3C2410_UTRSTAT_TXFE 84 beq 1001b 85 861002: @ exit busyuart 87 .endm 88