Merge git://git.denx.de/u-boot-fsl-qoriq
[oweals/u-boot.git] / drivers / serial / serial_stm32x7.c
index 81a230860dacaf12e68393417a1a49b1966edd7e..a5d529cab28d65fbc1d92a6c8cac5edaf8075b54 100644 (file)
@@ -83,7 +83,9 @@ static int stm32_serial_pending(struct udevice *dev, bool input)
 static int stm32_serial_probe(struct udevice *dev)
 {
        struct stm32x7_serial_platdata *plat = dev_get_platdata(dev);
+       struct clk clk;
        fdt_addr_t base = plat->base;
+       int ret;
        bool stm32f4;
        u8 uart_enable_bit;
 
@@ -91,10 +93,6 @@ static int stm32_serial_probe(struct udevice *dev)
        stm32f4 = plat->uart_info->stm32f4;
        uart_enable_bit = plat->uart_info->uart_enable_bit;
 
-#ifdef CONFIG_CLK
-       int ret;
-       struct clk clk;
-
        ret = clk_get_by_index(dev, 0, &clk);
        if (ret < 0)
                return ret;
@@ -104,7 +102,6 @@ static int stm32_serial_probe(struct udevice *dev)
                dev_err(dev, "failed to enable clock\n");
                return ret;
        }
-#endif
 
        plat->clock_rate = clk_get_rate(&clk);
        if (plat->clock_rate < 0) {
@@ -117,16 +114,18 @@ static int stm32_serial_probe(struct udevice *dev)
                     BIT(uart_enable_bit));
        if (plat->uart_info->has_overrun_disable)
                setbits_le32(base + CR3_OFFSET(stm32f4), USART_CR3_OVRDIS);
+       if (plat->uart_info->has_fifo)
+               setbits_le32(base + CR1_OFFSET(stm32f4), USART_CR1_FIFOEN);
        setbits_le32(base + CR1_OFFSET(stm32f4), USART_CR1_RE | USART_CR1_TE |
                     BIT(uart_enable_bit));
 
        return 0;
 }
 
-#if CONFIG_IS_ENABLED(OF_CONTROL)
 static const struct udevice_id stm32_serial_id[] = {
-       { .compatible = "st,stm32f7-uart", .data = (ulong)&stm32x7_info},
-       { .compatible = "st,stm32h7-uart", .data = (ulong)&stm32x7_info},
+       { .compatible = "st,stm32-uart", .data = (ulong)&stm32f4_info},
+       { .compatible = "st,stm32f7-uart", .data = (ulong)&stm32f7_info},
+       { .compatible = "st,stm32h7-uart", .data = (ulong)&stm32h7_info},
        {}
 };
 
@@ -140,7 +139,6 @@ static int stm32_serial_ofdata_to_platdata(struct udevice *dev)
 
        return 0;
 }
-#endif
 
 static const struct dm_serial_ops stm32_serial_ops = {
        .putc = stm32_serial_putc,