This is the documentation for the latest (main) development branch of Zephyr. If you are looking for the documentation of previous releases, use the drop-down menu on the left and select the desired version.

Error Detection And Correction (EDAC)

API Reference

group edac

Enums

enum edac_error_type

EDAC error type.

Values:

enumerator EDAC_ERROR_TYPE_DRAM_COR = BIT(0)

Correctable error type

enumerator EDAC_ERROR_TYPE_DRAM_UC = BIT(1)

Uncorrectable error type

Functions

static inline int edac_inject_set_param1(const struct device *dev, uint64_t value)

Set injection parameter param1.

Set first error injection parameter value.

Parameters
  • dev – Pointer to the device structure

  • value – First injection parameter

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, other error code otherwise

static inline int edac_inject_get_param1(const struct device *dev, uint64_t *value)

Get injection parameter param1.

Get first error injection parameter value.

Parameters
  • dev – Pointer to the device structure

  • value – Pointer to the first injection parameter

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_set_param2(const struct device *dev, uint64_t value)

Set injection parameter param2.

Set second error injection parameter value.

Parameters
  • dev – Pointer to the device structure

  • value – Second injection parameter

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_get_param2(const struct device *dev, uint64_t *value)

Get injection parameter param2.

Parameters
  • dev – Pointer to the device structure

  • value – Pointer to the second injection parameter

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_set_error_type(const struct device *dev, uint32_t error_type)

Set error type value.

Set the value of error type to be injected

Parameters
  • dev – Pointer to the device structure

  • error_type – Error type value

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_get_error_type(const struct device *dev, uint32_t *error_type)

Get error type value.

Get the value of error type to be injected

Parameters
  • dev – Pointer to the device structure

  • error_type – Pointer to error type value

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_inject_error_trigger(const struct device *dev)

Set injection control.

Trigger error injection.

Parameters
  • dev – Pointer to the device structure

Returns

  • -ENOSYS – if the optional interface is not implemented

  • 0 – on success, error code otherwise

static inline int edac_ecc_error_log_get(const struct device *dev, uint64_t *value)

Get ECC Error Log.

Read value of ECC Error Log.

Parameters
  • dev – Pointer to the device structure

  • value – Pointer to the ECC Error Log value

Returns

  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_ecc_error_log_clear(const struct device *dev)

Clear ECC Error Log.

Clear value of ECC Error Log.

Parameters
  • dev – Pointer to the device structure

Returns

  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_parity_error_log_get(const struct device *dev, uint64_t *value)

Get Parity Error Log.

Read value of Parity Error Log.

Parameters
  • dev – Pointer to the device structure

  • value – Pointer to the parity Error Log value

Returns

  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_parity_error_log_clear(const struct device *dev)

Clear Parity Error Log.

Clear value of Parity Error Log.

Parameters
  • dev – Pointer to the device structure

Returns

  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_errors_cor_get(const struct device *dev)

Get number of correctable errors.

Parameters
  • dev – Pointer to the device structure

Returns

  • num – Number of correctable errors

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_errors_uc_get(const struct device *dev)

Get number of uncorrectable errors.

Parameters
  • dev – Pointer to the device structure

Returns

  • num – Number of uncorrectable errors

  • -ENOSYS – if the mandatory interface is not implemented

static inline int edac_notify_callback_set(const struct device *dev, edac_notify_callback_f cb)

Register callback function for memory error exception

This callback runs in interrupt context

Parameters
  • dev – EDAC driver device to install callback

  • cb – Callback function pointer

Returns

  • 0 – on success, error code otherwise

  • -ENOSYS – if the mandatory interface is not implemented

struct edac_driver_api
#include <edac.h>

EDAC driver API.

This is the mandatory API any EDAC driver needs to expose.