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 * .frequency = 3686400, 64 * .mctrl_cfg[0] = MCTRL_SIG(DIR_OP, LINE_OP0), 65 * .mctrl_cfg[1] = MCTRL_SIG(DIR_OP, LINE_OP1), 66 * }; 67 * 68 * static struct platform_device sc2892 = { 69 * .name = "sc2892", 70 * .id = -1, 71 * .resource = sc2892_resources, 72 * .num_resources = ARRAY_SIZE(sc2892_resources), 73 * .dev = { 74 * .platform_data = &sc2892_info, 75 * }, 76 * }; 77 */ 78 79/* SCCNXP platform data structure */ 80struct sccnxp_pdata { 81 /* Frequency (extrenal clock or crystal) */ 82 int frequency; 83 /* Shift for A0 line */ 84 const u8 reg_shift; 85 /* Modem control lines configuration */ 86 const u32 mctrl_cfg[SCCNXP_MAX_UARTS]; 87 /* Timer value for polling mode (usecs) */ 88 const unsigned int poll_time_us; 89}; 90 91#endif 92