linux/include/linux/platform_data/serial-sccnxp.h
<<
>>
Prefs
   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