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