ofnode node;
struct regmap *regmap;
u32 num_lanes;
+ bool already_configured = false;
node = get_child_by_name(dev, "serdes");
goto err_addr_to_resource;
}
- for (i = 0; i < wiz->num_lanes; i++) {
- regmap_field_read(wiz->p_enable[i], &val);
- if (val & (P_ENABLE | P_ENABLE_FORCE)) {
- dev_err(dev, "SERDES already configured\n");
- rc = -EBUSY;
- goto err_addr_to_resource;
- }
- }
-
rc = j721e_wiz_bind_of_clocks(wiz);
if (rc) {
dev_err(dev, "Failed to bind clocks\n");
goto err_addr_to_resource;
}
- rc = wiz_init(wiz);
- if (rc) {
- dev_err(dev, "WIZ initialization failed\n");
- goto err_addr_to_resource;
+ for (i = 0; i < wiz->num_lanes; i++) {
+ regmap_field_read(wiz->p_enable[i], &val);
+ if (val & (P_ENABLE | P_ENABLE_FORCE)) {
+ dev_info(dev, "SERDES already configured, skipping wiz initialization\n");
+ already_configured = true;
+ break;
+ }
+ }
+
+ if (!already_configured) {
+ rc = wiz_init(wiz);
+ if (rc) {
+ dev_err(dev, "WIZ initialization failed\n");
+ goto err_addr_to_resource;
+ }
}
return 0;