/*-------------------------------------------------------------------------*/
 
 #if defined(CONFIG_OF)
+static void of_spi_parse_dt_cs_delay(struct device_node *nc,
+                                    struct spi_delay *delay, const char *prop)
+{
+       u32 value;
+
+       if (!of_property_read_u32(nc, prop, &value)) {
+               if (value > U16_MAX) {
+                       delay->value = DIV_ROUND_UP(value, 1000);
+                       delay->unit = SPI_DELAY_UNIT_USECS;
+               } else {
+                       delay->value = value;
+                       delay->unit = SPI_DELAY_UNIT_NSECS;
+               }
+       }
+}
+
 static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
                           struct device_node *nc)
 {
        u32 value;
-       u16 cs_setup;
        int rc;
 
        /* Mode (clock phase/polarity/etc.) */
        if (!of_property_read_u32(nc, "spi-max-frequency", &value))
                spi->max_speed_hz = value;
 
-       if (!of_property_read_u16(nc, "spi-cs-setup-delay-ns", &cs_setup)) {
-               spi->cs_setup.value = cs_setup;
-               spi->cs_setup.unit = SPI_DELAY_UNIT_NSECS;
-       }
+       /* Device CS delays */
+       of_spi_parse_dt_cs_delay(nc, &spi->cs_setup, "spi-cs-setup-delay-ns");
 
        return 0;
 }