+static int dwc_eqos_setup_rxclock(struct platform_device *pdev)
+{
+ struct device_node *np = pdev->dev.of_node;
+
+ if (np && of_property_read_bool(np, "rx-clock-mux")) {
+ unsigned int reg, val;
+ struct regmap *syscon = syscon_regmap_lookup_by_phandle(np,
+ "rx-clock-mux");
+
+ if (IS_ERR(syscon)) {
+ dev_err(&pdev->dev, "couldn't get the rx-clock-mux syscon!\n");
+ return PTR_ERR(syscon);
+ }
+
+ if (of_property_read_u32_index(np, "rx-clock-mux", 1, ®)) {
+ dev_err(&pdev->dev, "couldn't get the rx-clock-mux reg. offset!\n");
+ return -EINVAL;
+ }
+
+ if (of_property_read_u32_index(np, "rx-clock-mux", 2, &val)) {
+ dev_err(&pdev->dev, "couldn't get the rx-clock-mux reg. val!\n");
+ return -EINVAL;
+ }
+
+ regmap_write(syscon, reg, val);
This appears to be one of those binds which allows any magic value to
be placed into any register. That is not how DT should be used.
Andrew