--- /dev/null
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+# (C) Copyright 2024 - Analog Devices, Inc.
+#
+
+obj-y += somcrr_common.o
+obj-$(CONFIG_ADI_CARRIER_SOMCRR_EZKIT) += somcrr_ezkit.o
+obj-$(CONFIG_ADI_CARRIER_SOMCRR_EZLITE) += somcrr_ezlite.o
--- /dev/null
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * (C) Copyright 2025 - Analog Devices, Inc.
+ *
+ */
+
+#ifndef BOARD_ADI_CARRIERS_SOMCRR_H
+#define BOARD_ADI_CARRIERS_SOMCRR_H
+
+void adi_somcrr_init_ethernet(void);
+void adi_somcrr_enable_ethernet(void);
+void adi_somcrr_disable_ethernet(void);
+
+#endif
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * (C) Copyright 2025 - Analog Devices, Inc.
+ */
+
+#include <asm/arch-adi/sc5xx/sc5xx.h>
+#include <linux/delay.h>
+
+#include "somcrr.h"
+
+void adi_somcrr_init_ethernet(void)
+{
+ adi_somcrr_enable_ethernet();
+ mdelay(20);
+ adi_somcrr_disable_ethernet();
+ mdelay(90);
+ adi_somcrr_enable_ethernet();
+ mdelay(20);
+}
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * (C) Copyright 2025 - Analog Devices, Inc.
+ */
+
+#include <asm/gpio.h>
+
+#include "somcrr.h"
+
+void adi_somcrr_enable_ethernet(void)
+{
+ struct gpio_desc *eth1;
+ struct gpio_desc *eth1_reset;
+ struct gpio_desc *gige_reset;
+
+ gpio_hog_lookup_name("eth1-en", ð1);
+ gpio_hog_lookup_name("eth1-reset", ð1_reset);
+ gpio_hog_lookup_name("gige-reset", &gige_reset);
+
+ dm_gpio_set_value(eth1, 1);
+ dm_gpio_set_value(eth1_reset, 0);
+ dm_gpio_set_value(gige_reset, 0);
+}
+
+void adi_somcrr_disable_ethernet(void)
+{
+ struct gpio_desc *eth1;
+ struct gpio_desc *eth1_reset;
+ struct gpio_desc *gige_reset;
+
+ gpio_hog_lookup_name("eth1-en", ð1);
+ gpio_hog_lookup_name("eth1-reset", ð1_reset);
+ gpio_hog_lookup_name("gige-reset", &gige_reset);
+
+ dm_gpio_set_value(eth1, 0);
+ dm_gpio_set_value(eth1_reset, 1);
+ dm_gpio_set_value(gige_reset, 1);
+}
--- /dev/null
+// SPDX-License-Identifier: GPL-2.0-or-later
+/*
+ * (C) Copyright 2025 - Analog Devices, Inc.
+ */
+
+#include <asm/gpio.h>
+
+#include "somcrr.h"
+
+void adi_somcrr_enable_ethernet(void)
+{
+ struct gpio_desc *gige_reset;
+
+ gpio_hog_lookup_name("eth0-reset", &gige_reset);
+ dm_gpio_set_value(gige_reset, 0);
+}
+
+void adi_somcrr_disable_ethernet(void)
+{
+ struct gpio_desc *gige_reset;
+
+ gpio_hog_lookup_name("eth0-reset", &gige_reset);
+ dm_gpio_set_value(gige_reset, 1);
+}