dmi_dell_calling_iface

Synopsis

#include <opendmi/entity/dell/calling-iface.h>

typedef struct dmi_dell_calling_iface {
    uint16_t command_io_address;
    uint8_t command_io_code;
    uint32_t supported_commands;
    size_t token_count;
    dmi_dell_calling_iface_token_t *tokens;
} dmi_dell_calling_iface_t;

Description

The dmi_dell_calling_iface_t structure holds the decoded Dell calling interface structure (type 218): the I/O port through which commands are issued to the firmware, and the tokens, settings of the firmware kept in non-volatile storage, which these commands read and write.

The structure is returned by dmi_entity_info for the structures of type DMI_TYPE(dell_calling_iface), declared in <opendmi/module/dell.h>, and lives as long as the context it has been decoded in.

Fields

command_io_address

Address of the I/O port written to issue a command to the firmware.

command_io_code

Value written to the command I/O port to issue a command.

supported_commands

Bit mask of the commands the firmware supports, as the structure carries it. The meaning of the bits is not publicly documented.

token_count

Number of elements of tokens.

tokens

Tokens, in the order of the structure. Unused records (token identifier 0x0000) and the end-of-table marker (0xFFFF) are left out. May be nullptr when token_count is 0.

Examples

dmi_registry_t           *registry = dmi_get_registry(context);
dmi_entity_t             *entity   = dmi_registry_lookup_first(registry,
                                         DMI_TYPE(dell_calling_iface), true);
dmi_dell_calling_iface_t *iface    = dmi_entity_info(entity,
                                         DMI_TYPE(dell_calling_iface));

if (iface != nullptr) {
    for (size_t i = 0; i < iface->token_count; i++)
        printf("Token 0x%04x: 0x%04x\n", iface->tokens[i].id,
               iface->tokens[i].value);
}

Standards

Not part of the SMBIOS specification. Defined by Dell firmware, see the Dell Calling Interface (Type 218) chapter of the reference manual.