Browse Source

drivers: hwinfo: Add support for Apollo510 hwinfo

This commit adds support for Apollo510 SoC in ambiq hwinfo driver

Signed-off-by: Hao Luo <hluo@ambiq.com>
pull/89559/head
Hao Luo 5 months ago committed by Benjamin Cabé
parent
commit
95153de15b
  1. 1
      boards/ambiq/apollo510_evb/apollo510_evb.yaml
  2. 2
      drivers/hwinfo/Kconfig
  3. 19
      drivers/hwinfo/hwinfo_ambiq.c

1
boards/ambiq/apollo510_evb/apollo510_evb.yaml

@ -16,6 +16,7 @@ supported: @@ -16,6 +16,7 @@ supported:
- spi
- i2c
- rtc
- hwinfo
- clock_control
- mspi
testing:

2
drivers/hwinfo/Kconfig

@ -247,7 +247,7 @@ config HWINFO_RW61X @@ -247,7 +247,7 @@ config HWINFO_RW61X
config HWINFO_AMBIQ
bool "AMBIQ hwinfo"
default y
depends on SOC_SERIES_APOLLO4X
depends on SOC_SERIES_APOLLO4X || SOC_SERIES_APOLLO5X
select HWINFO_HAS_DRIVER
select AMBIQ_HAL
select AMBIQ_HAL_USE_HWINFO

19
drivers/hwinfo/hwinfo_ambiq.c

@ -11,7 +11,6 @@ @@ -11,7 +11,6 @@
ssize_t z_impl_hwinfo_get_device_id(uint8_t *buffer, size_t length)
{
struct ambiq_hwinfo {
/* Ambiq Chip ID0 */
uint32_t chip_id_0;
@ -27,7 +26,12 @@ ssize_t z_impl_hwinfo_get_device_id(uint8_t *buffer, size_t length) @@ -27,7 +26,12 @@ ssize_t z_impl_hwinfo_get_device_id(uint8_t *buffer, size_t length)
/* Contains the HAL hardware information about the device. */
am_hal_mcuctrl_device_t mcu_ctrl_device;
#if (CONFIG_SOC_SERIES_APOLLO5X)
am_hal_info1_read(AM_HAL_INFO_INFOSPACE_CURRENT_INFO1, AM_REG_OTP_INFO1_TRIM_REV_O / 4, 1,
&dev_hw_info.factory_trim_version);
#else
am_hal_mram_info_read(1, AM_REG_INFO1_TRIM_REV_O / 4, 1, &dev_hw_info.factory_trim_version);
#endif
am_hal_mcuctrl_info_get(AM_HAL_MCUCTRL_INFO_DEVICEID, &mcu_ctrl_device);
dev_hw_info.chip_id_0 = mcu_ctrl_device.ui32ChipID0;
@ -61,9 +65,15 @@ int z_impl_hwinfo_get_reset_cause(uint32_t *cause) @@ -61,9 +65,15 @@ int z_impl_hwinfo_get_reset_cause(uint32_t *cause)
}
/* POWER CYCLE */
#if (CONFIG_SOC_SERIES_APOLLO5X)
if (reset_status & AM_HAL_RESET_STATUS_POA) {
flags |= RESET_POR;
}
#else
if (reset_status & AM_HAL_RESET_STATUS_POR) {
flags |= RESET_POR;
}
#endif
/* BROWNOUT DETECTOR */
if (reset_status & AM_HAL_RESET_STATUS_BOD) {
@ -110,6 +120,13 @@ int z_impl_hwinfo_get_reset_cause(uint32_t *cause) @@ -110,6 +120,13 @@ int z_impl_hwinfo_get_reset_cause(uint32_t *cause)
flags |= RESET_HARDWARE;
}
#if (CONFIG_SOC_SERIES_APOLLO5X)
/* AIRCR */
if (reset_status & AM_HAL_RESET_STATUS_AIRCR) {
flags |= RESET_SOFTWARE;
}
#endif
*cause = flags;
return 0;
}

Loading…
Cancel
Save