/* Always ask for fixed clock rate from a property. */
        device_property_read_u32(dev, "clock-frequency", &uartclk);
 
-       s->clk = devm_clk_get_optional(dev, "osc");
+       xtal = device_property_match_string(dev, "clock-names", "osc") < 0;
+       if (xtal)
+               s->clk = devm_clk_get_optional(dev, "xtal");
+       else
+               s->clk = devm_clk_get_optional(dev, "osc");
        if (IS_ERR(s->clk))
                return PTR_ERR(s->clk);
-       if (s->clk) {
-               xtal = false;
-       } else {
-               s->clk = devm_clk_get_optional(dev, "xtal");
-               if (IS_ERR(s->clk))
-                       return PTR_ERR(s->clk);
-
-               xtal = true;
-       }
 
        ret = clk_prepare_enable(s->clk);
        if (ret)