aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPali Rohár2022-04-08 16:30:14 +0200
committerStefan Roese2022-04-21 12:31:36 +0200
commit98bbb6e7ab9b263a84c50a581c30089f9126c708 (patch)
tree8ae109f3c64877d8674f74453cf8040a569c4dd1
parentada791db3eb13ad5ac0447c8c8b0343c4d771fb9 (diff)
board: turris: Allow to specify first eth idx of first MAC address
Turris Omnia uses first MAC address from OTP for second ethernet interface. Second MAC address for third interface and third MAC address for first interface. Other Turris routers do not have this rotate by one mapping. So add function parameter for specifying id of the first ethernet interface. Signed-off-by: Pali Rohár <pali@kernel.org> Reviewed-by: Marek Behún <marek.behun@nic.cz>
-rw-r--r--board/CZ.NIC/turris_atsha_otp.c8
-rw-r--r--board/CZ.NIC/turris_atsha_otp.h2
-rw-r--r--board/CZ.NIC/turris_omnia/turris_omnia.c2
3 files changed, 6 insertions, 6 deletions
diff --git a/board/CZ.NIC/turris_atsha_otp.c b/board/CZ.NIC/turris_atsha_otp.c
index 840721a9b73..7a39b7f61d5 100644
--- a/board/CZ.NIC/turris_atsha_otp.c
+++ b/board/CZ.NIC/turris_atsha_otp.c
@@ -49,7 +49,7 @@ static void set_mac_if_invalid(int i, u8 *mac)
eth_env_set_enetaddr_by_index("eth", i, mac);
}
-int turris_atsha_otp_init_mac_addresses(void)
+int turris_atsha_otp_init_mac_addresses(int first_idx)
{
struct udevice *dev = get_atsha204a_dev();
u8 mac0[4], mac1[4], mac[6];
@@ -81,11 +81,11 @@ int turris_atsha_otp_init_mac_addresses(void)
mac[4] = mac1[2];
mac[5] = mac1[3];
- set_mac_if_invalid(1, mac);
+ set_mac_if_invalid((first_idx + 0) % 3, mac);
increment_mac(mac);
- set_mac_if_invalid(2, mac);
+ set_mac_if_invalid((first_idx + 1) % 3, mac);
increment_mac(mac);
- set_mac_if_invalid(0, mac);
+ set_mac_if_invalid((first_idx + 2) % 3, mac);
return 0;
}
diff --git a/board/CZ.NIC/turris_atsha_otp.h b/board/CZ.NIC/turris_atsha_otp.h
index 667d01af731..bd4308fdc3e 100644
--- a/board/CZ.NIC/turris_atsha_otp.h
+++ b/board/CZ.NIC/turris_atsha_otp.h
@@ -3,7 +3,7 @@
#ifndef TURRIS_ATSHA_OTP_H
#define TURRIS_ATSHA_OTP_H
-int turris_atsha_otp_init_mac_addresses(void);
+int turris_atsha_otp_init_mac_addresses(int first_idx);
int turris_atsha_otp_get_serial_number(u32 *version_num, u32 *serial_num);
#endif
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index 719e8750e60..da2fee578c4 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -606,7 +606,7 @@ int show_board_info(void)
int misc_init_r(void)
{
- turris_atsha_otp_init_mac_addresses();
+ turris_atsha_otp_init_mac_addresses(1);
return 0;
}