
On Fri, 1 Apr 2022 at 06:44, Paweł Anikiel pan@semihalf.com wrote:
Add board directory for Google Chameleon V3 board
Signed-off-by: Paweł Anikiel pan@semihalf.com
board/google/chameleonv3/Makefile | 5 +++ board/google/chameleonv3/board.c | 27 ++++++++++++++ board/google/chameleonv3/fpga.its | 28 ++++++++++++++ board/google/chameleonv3/fpga_early_io.its | 35 ++++++++++++++++++ board/google/chameleonv3/mercury_aa1.c | 43 ++++++++++++++++++++++ board/google/chameleonv3/mercury_aa1.h | 12 ++++++ 6 files changed, 150 insertions(+) create mode 100644 board/google/chameleonv3/Makefile create mode 100644 board/google/chameleonv3/board.c create mode 100644 board/google/chameleonv3/fpga.its create mode 100644 board/google/chameleonv3/fpga_early_io.its create mode 100644 board/google/chameleonv3/mercury_aa1.c create mode 100644 board/google/chameleonv3/mercury_aa1.h
Reviewed-by: Simon Glass sjg@chromium.org
On Fri, 1 Apr 2022 at 06:44, Paweł Anikiel pan@semihalf.com wrote:
Add board directory for Google Chameleon V3 board
Signed-off-by: Paweł Anikiel pan@semihalf.com
board/google/chameleonv3/Makefile | 5 +++ board/google/chameleonv3/board.c | 27 ++++++++++++++ board/google/chameleonv3/fpga.its | 28 ++++++++++++++ board/google/chameleonv3/fpga_early_io.its | 35 ++++++++++++++++++ board/google/chameleonv3/mercury_aa1.c | 43 ++++++++++++++++++++++ board/google/chameleonv3/mercury_aa1.h | 12 ++++++ 6 files changed, 150 insertions(+) create mode 100644 board/google/chameleonv3/Makefile create mode 100644 board/google/chameleonv3/board.c create mode 100644 board/google/chameleonv3/fpga.its create mode 100644 board/google/chameleonv3/fpga_early_io.its create mode 100644 board/google/chameleonv3/mercury_aa1.c create mode 100644 board/google/chameleonv3/mercury_aa1.h
diff --git a/board/google/chameleonv3/Makefile b/board/google/chameleonv3/Makefile new file mode 100644 index 0000000000..bb413fde83 --- /dev/null +++ b/board/google/chameleonv3/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0 +# +# Copyright 2022 Google LLC
+obj-y := board.o mercury_aa1.o diff --git a/board/google/chameleonv3/board.c b/board/google/chameleonv3/board.c new file mode 100644 index 0000000000..4d3049689d --- /dev/null +++ b/board/google/chameleonv3/board.c @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Copyright 2022 Google LLC
- */
+#include <net.h> +#include <errno.h> +#include "mercury_aa1.h"
+int misc_init_r(void) +{
u8 mac[ARP_HLEN];
int res;
if (env_get("ethaddr"))
return 0;
res = mercury_aa1_read_mac(mac);
if (res) {
printf("couldn't read mac address: %s\n", errno_str(res));
return 0;
}
if (is_valid_ethaddr(mac))
eth_env_set_enetaddr("ethaddr", mac);
return 0;
+} diff --git a/board/google/chameleonv3/fpga.its b/board/google/chameleonv3/fpga.its new file mode 100644 index 0000000000..85a830002f --- /dev/null +++ b/board/google/chameleonv3/fpga.its @@ -0,0 +1,28 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Copyright 2022 Google LLC
- */
+/dts-v1/;
+/ {
description = "FIT image with FPGA bistream";
#address-cells = <1>;
images {
fpga-periph-1 {
description = "FPGA full bitstream";
data = /incbin/("../../../fpga.rbf");
type = "fpga";
arch = "arm";
compression = "none";
};
};
configurations {
default = "config-1";
config-1 {
description = "Boot with FPGA config";
fpga = "fpga-periph-1";
};
};
+}; diff --git a/board/google/chameleonv3/fpga_early_io.its b/board/google/chameleonv3/fpga_early_io.its new file mode 100644 index 0000000000..ebc7bcbaae --- /dev/null +++ b/board/google/chameleonv3/fpga_early_io.its @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Copyright 2022 Google LLC
- */
+/dts-v1/;
+/ {
description = "FIT image with FPGA bistream";
#address-cells = <1>;
images {
fpga-periph-1 {
description = "FPGA peripheral bitstream";
data = /incbin/("../../../periph.rbf");
type = "fpga";
arch = "arm";
compression = "none";
};
fpga-core-1 {
description = "FPGA core bitstream";
data = /incbin/("../../../core.rbf");
type = "fpga";
arch = "arm";
compression = "none";
};
};
configurations {
default = "config-1";
config-1 {
description = "Boot with FPGA config";
fpga = "fpga-periph-1", "fpga-core-1";
};
};
+}; diff --git a/board/google/chameleonv3/mercury_aa1.c b/board/google/chameleonv3/mercury_aa1.c new file mode 100644 index 0000000000..ed447ec37c --- /dev/null +++ b/board/google/chameleonv3/mercury_aa1.c @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- Copyright 2022 Google LLC
- */
+#include <net.h> +#include <dm/device.h> +#include <dm/uclass.h> +#include <atsha204a-i2c.h> +#include "mercury_aa1.h"
+#define MERCURY_AA1_ATSHA204A_OTP_MAC0 4 +#define MERCURY_AA1_ATSHA204A_OTP_MAC1 5
+int mercury_aa1_read_mac(u8 *mac) +{
struct udevice *dev;
u8 buf[8];
int ret;
ret = uclass_get_device_by_name(UCLASS_MISC, "atsha204a@64", &dev);
if (ret)
return ret;
ret = atsha204a_wakeup(dev);
if (ret)
return ret;
ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
MERCURY_AA1_ATSHA204A_OTP_MAC0, buf);
if (ret)
goto sleep;
ret = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
MERCURY_AA1_ATSHA204A_OTP_MAC1, buf + 4);
if (ret)
goto sleep;
memcpy(mac, buf, ARP_HLEN);
+sleep:
atsha204a_sleep(dev);
return ret;
+} diff --git a/board/google/chameleonv3/mercury_aa1.h b/board/google/chameleonv3/mercury_aa1.h new file mode 100644 index 0000000000..636b735a3b --- /dev/null +++ b/board/google/chameleonv3/mercury_aa1.h @@ -0,0 +1,12 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/*
- Copyright 2022 Google LLC
- */
+/**
- mercury_aa1_read_mac() - Read mac address from on-board OTP memory
- @mac: Returned mac address
- Return: 0 if successful, -ve on error
- */
+int mercury_aa1_read_mac(u8 *mac);
2.35.1.1094.g7c7d902a7c-goog