efi_loader: type of efi_secure_mode
[oweals/u-boot.git] / include / ns16550.h
index 0607379537d7ccf1038a0d322fdf29d95fbc0df4..18c9077755bef823f388c8219d0bdc3de8fd86ee 100644 (file)
 #define CONFIG_SYS_NS16550_REG_SIZE (-1)
 #endif
 
+#ifdef CONFIG_NS16550_DYNAMIC
+#define UART_REG(x)    unsigned char x
+#else
 #if !defined(CONFIG_SYS_NS16550_REG_SIZE) || (CONFIG_SYS_NS16550_REG_SIZE == 0)
 #error "Please define NS16550 registers size."
-#elif defined(CONFIG_SYS_NS16550_MEM32)
+#elif defined(CONFIG_SYS_NS16550_MEM32) && !defined(CONFIG_DM_SERIAL)
 #define UART_REG(x) u32 x
 #elif (CONFIG_SYS_NS16550_REG_SIZE > 0)
 #define UART_REG(x)                                               \
        unsigned char x;                                                \
        unsigned char postpad_##x[-CONFIG_SYS_NS16550_REG_SIZE - 1];
 #endif
+#endif /* CONFIG_NS16550_DYNAMIC */
+
+enum ns16550_flags {
+       NS16550_FLAG_IO         = 1 << 0, /* Use I/O access (else mem-mapped) */
+       NS16550_FLAG_ENDIAN     = 1 << 1, /* Use out_le/be_32() */
+       NS16550_FLAG_BE         = 1 << 2, /* Big-endian access (else little) */
+};
 
 /**
  * struct ns16550_platdata - information about a NS16550 port
  *
  * @base:              Base register address
+ * @reg_width:         IO accesses size of registers (in bytes, 1 or 4)
  * @reg_shift:         Shift size of registers (0=byte, 1=16bit, 2=32bit...)
+ * @reg_offset:                Offset to start of registers (normally 0)
  * @clock:             UART base clock speed in Hz
+ * @fcr:               Offset of FCR register (normally UART_FCR_DEFVAL)
+ * @flags:             A few flags (enum ns16550_flags)
+ * @bdf:               PCI slot/function (pci_dev_t)
  */
 struct ns16550_platdata {
        unsigned long base;
+       int reg_width;
        int reg_shift;
+       int reg_offset;
        int clock;
+       u32 fcr;
+       int flags;
+#if defined(CONFIG_PCI) && defined(CONFIG_SPL)
+       int bdf;
+#endif
 };
 
 struct udevice;
@@ -116,6 +138,14 @@ typedef struct NS16550 *NS16550_t;
 #define UART_FCR_RXSR          0x02 /* Receiver soft reset */
 #define UART_FCR_TXSR          0x04 /* Transmitter soft reset */
 
+/* Ingenic JZ47xx specific UART-enable bit. */
+#define UART_FCR_UME           0x10
+
+/* Clear & enable FIFOs */
+#define UART_FCR_DEFVAL (UART_FCR_FIFO_EN | \
+                       UART_FCR_RXSR | \
+                       UART_FCR_TXSR)
+
 /*
  * These are the definitions for the Modem Control Register
  */