1 /* 2 * NXP (Philips) SCC+++(SCN+++) serial driver 3 * 4 * Copyright (C) 2012 Alexander Shiyan <shc_work@mail.ru> 5 * 6 * Based on sc26xx.c, by Thomas Bogendörfer (tsbogend@alpha.franken.de) 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 */ 13 14 #ifndef _PLATFORM_DATA_SERIAL_SCCNXP_H_ 15 #define _PLATFORM_DATA_SERIAL_SCCNXP_H_ 16 17 #define SCCNXP_MAX_UARTS 2 18 19 /* Output lines */ 20 #define LINE_OP0 1 21 #define LINE_OP1 2 22 #define LINE_OP2 3 23 #define LINE_OP3 4 24 #define LINE_OP4 5 25 #define LINE_OP5 6 26 #define LINE_OP6 7 27 #define LINE_OP7 8 28 29 /* Input lines */ 30 #define LINE_IP0 9 31 #define LINE_IP1 10 32 #define LINE_IP2 11 33 #define LINE_IP3 12 34 #define LINE_IP4 13 35 #define LINE_IP5 14 36 #define LINE_IP6 15 37 38 /* Signals */ 39 #define DTR_OP 0 /* DTR */ 40 #define RTS_OP 4 /* RTS */ 41 #define DSR_IP 8 /* DSR */ 42 #define CTS_IP 12 /* CTS */ 43 #define DCD_IP 16 /* DCD */ 44 #define RNG_IP 20 /* RNG */ 45 46 #define DIR_OP 24 /* Special signal for control RS-485. 47 * Goes high when transmit, 48 * then goes low. 49 */ 50 51 /* Routing control signal 'sig' to line 'line' */ 52 #define MCTRL_SIG(sig, line) ((line) << (sig)) 53 54 /* 55 * Example board initialization data: 56 * 57 * static struct resource sc2892_resources[] = { 58 * DEFINE_RES_MEM(UART_PHYS_START, 0x10), 59 * DEFINE_RES_IRQ(IRQ_EXT2), 60 * }; 61 * 62 * static struct sccnxp_pdata sc2892_info = { 63 * .mctrl_cfg[0] = MCTRL_SIG(DIR_OP, LINE_OP0), 64 * .mctrl_cfg[1] = MCTRL_SIG(DIR_OP, LINE_OP1), 65 * }; 66 * 67 * static struct platform_device sc2892 = { 68 * .name = "sc2892", 69 * .id = -1, 70 * .resource = sc2892_resources, 71 * .num_resources = ARRAY_SIZE(sc2892_resources), 72 * .dev = { 73 * .platform_data = &sc2892_info, 74 * }, 75 * }; 76 */ 77 78 /* SCCNXP platform data structure */ 79 struct sccnxp_pdata { 80 /* Shift for A0 line */ 81 const u8 reg_shift; 82 /* Modem control lines configuration */ 83 const u32 mctrl_cfg[SCCNXP_MAX_UARTS]; 84 /* Timer value for polling mode (usecs) */ 85 const unsigned int poll_time_us; 86 }; 87 88 #endif 89