root/include/linux/platform_data/serial-sccnxp.h

/* [<][>][^][v][top][bottom][index][help] */
/*
 *  NXP (Philips) SCC+++(SCN+++) serial driver
 *
 *  Copyright (C) 2012 Alexander Shiyan <shc_work@mail.ru>
 *
 *  Based on sc26xx.c, by Thomas Bogendörfer (tsbogend@alpha.franken.de)
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 */

#ifndef _PLATFORM_DATA_SERIAL_SCCNXP_H_
#define _PLATFORM_DATA_SERIAL_SCCNXP_H_

#define SCCNXP_MAX_UARTS        2

/* Output lines */
#define LINE_OP0                1
#define LINE_OP1                2
#define LINE_OP2                3
#define LINE_OP3                4
#define LINE_OP4                5
#define LINE_OP5                6
#define LINE_OP6                7
#define LINE_OP7                8

/* Input lines */
#define LINE_IP0                9
#define LINE_IP1                10
#define LINE_IP2                11
#define LINE_IP3                12
#define LINE_IP4                13
#define LINE_IP5                14
#define LINE_IP6                15

/* Signals */
#define DTR_OP                  0       /* DTR */
#define RTS_OP                  4       /* RTS */
#define DSR_IP                  8       /* DSR */
#define CTS_IP                  12      /* CTS */
#define DCD_IP                  16      /* DCD */
#define RNG_IP                  20      /* RNG */

#define DIR_OP                  24      /* Special signal for control RS-485.
                                         * Goes high when transmit,
                                         * then goes low.
                                         */

/* Routing control signal 'sig' to line 'line' */
#define MCTRL_SIG(sig, line)    ((line) << (sig))

/*
 * Example board initialization data:
 *
 * static struct resource sc2892_resources[] = {
 *      DEFINE_RES_MEM(UART_PHYS_START, 0x10),
 *      DEFINE_RES_IRQ(IRQ_EXT2),
 * };
 *
 * static struct sccnxp_pdata sc2892_info = {
 *      .mctrl_cfg[0]   = MCTRL_SIG(DIR_OP, LINE_OP0),
 *      .mctrl_cfg[1]   = MCTRL_SIG(DIR_OP, LINE_OP1),
 * };
 *
 * static struct platform_device sc2892 = {
 *      .name           = "sc2892",
 *      .id             = -1,
 *      .resource       = sc2892_resources,
 *      .num_resources  = ARRAY_SIZE(sc2892_resources),
 *      .dev = {
 *              .platform_data  = &sc2892_info,
 *      },
 * };
 */

/* SCCNXP platform data structure */
struct sccnxp_pdata {
        /* Shift for A0 line */
        const u8                reg_shift;
        /* Modem control lines configuration */
        const u32               mctrl_cfg[SCCNXP_MAX_UARTS];
        /* Timer value for polling mode (usecs) */
        const unsigned int      poll_time_us;
};

#endif

/* [<][>][^][v][top][bottom][index][help] */