Skip to content

Latest commit

 

History

History
361 lines (320 loc) · 12.2 KB

srvgrp-voltage.adoc

File metadata and controls

361 lines (320 loc) · 12.2 KB

Service Group - VOLTAGE (servicegroup_id: 0x00006)

The complete system can be classified into multiple domains for voltage control. Each domain is the logical group of one or more devices that have a single voltage source. The action corresponding to the messages in this group controls the voltage source which affects the device or the group of devices together since those devices share the same voltage source. Each domain is identified by domain_id which is a 32 bit` integer starting from 0.

Below table lists the services in this group:

Table 1. Voltage Services
Service ID Service Name Request Type

0x01

ENABLE_NOTIFICATION

NORMAL_REQUEST

0x02

GET_NUM_DOMAINS

NORMAL_REQUEST

0x03

GET_DOMAIN_ATTRIBUTES

NORMAL_REQUEST

0x04

GET_DOMAIN_LEVELS

NORMAL_REQUEST

0x05

SET_DOMAIN_CONFIG

NORMAL_REQUEST

0x06

GET_DOMAIN_CONFIG

NORMAL_REQUEST

0x07

SET_DOMAIN_LEVEL

NORMAL_REQUEST

0x08

GET_DOMAIN_LEVEL

NORMAL_REQUEST

Voltage Notifications

This service group does not support any event for notification.

Service: ENABLE_NOTIFICATION

This service allows AP to subscribe to voltage service group notifications. Platform can optionally support notifications of events which might occur in the platform. PuC can send these notification messages to AP if they are implemented and AP has subscribed to these. Events supported are described above in Voltage Notifications.

Table 2. Request Data
Word Name Type Description

0

EVENT_ID

uint32

Event to be subscribed for notification.

Table 3. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Notifications are subscribed successfully.

RPMI_ERROR_NOT_FOUND

EVENT_ID is not supported or invalid.

RPMI_ERROR_NOT_SUPPORTED

Notifications not supported.

Service: GET_NUM_DOMAINS

Request for number of domains available in the system.

Request Data
  • NA

Table 4. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully and voltage domains returned as NUM_DOMAINS.

1

NUM_DOMAINS

uint32

Number of Domains

Service: GET_DOMAIN_ATTRIBUTES

Each domain may have supported multiple voltage levels which are allowed by the domain to operate. This message for each domain returns a domain name which is a null terminated ASCII string of 16 byte. Number of levels represents the total number of voltage levels supported by a voltage domain. Transition latency is the max time taken for voltage to stabilize when changed on the regulator. Voltage levels depending on the hardware can be of different formats and this service currently supports Simple Linear, Multi-Linear and Discrete range. More voltage formats can be supported in future if required.

Table 5. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

Table 6. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found

1

FLAGS

uint32

Bits

Description

[31:30]

VOLTAGE_FORMAT

0b00: Fixed Voltage
0b01: Simple Linear Range containing single triplet
(min_uV, max_uV, step_uV).
0b10: Multi-Linear range containing multiple linear ranges of type `0x1`
where each range contains (min_uV, min_sel, max_sel, step_uV).
0b11: Discrete range.

[29:1]

Reserved

[0]

ALWAYS_ON

0b0: Voltage domain can be enabled/disabled.
0b1: Voltage domain is always-on, voltage value can be changed in the
supported voltage range.

2

NUM_LEVELS

uint32

Number of voltage levels supported by domain. Some values are dependent on the VOLTAGE_FORMAT.

Value

Description

1

VOLTAGE_FORMAT=0x0

3

VOLTAGE_FORMAT=0x1

N

VOLTAGE_FORMAT=0x2 or 0x3. Based on the format here each item can be a single voltage value or tuple of values. Check VOLTAGE_FORMAT field in FLAGS.

3

TRANSITION_LATENCY

uint32

Transition Latency

4:7

VOLTAGE_DOMAIN_NAME

uint8[16]

Voltage domain name

Service: GET_DOMAIN_LEVELS

Each domain may support multiple voltage levels which are allowed by the domain to operate. Depending on the Power supply/Voltage Regulator the domain may support voltage levels which can be either discrete or stepwise range. Discrete voltage range will be in sequence starting from lower voltage value at the lowest index to higher voltage level with increasing index. Number of voltage levels returned depends on the format of the voltage level. Total words required for the number levels according to the format in one message cannot exceed the total words available in one message DATA field. If they exceed then PuC will return the number of levels which can be accommodated in one message and set the REMAINING field accordingly. AP, when REMAINING field is not 0 must call this service again with appropriate VOLTAGE_LEVEL_INDEX set to get the remaining voltage levels. It’s possible that multiple service calls may be required to get all the voltage levels.

Table 7. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

1

VOLTAGE_LEVEL_INDEX

uint32

Voltage level index

Table 8. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully and voltage levels returned.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found.

RPMI_ERROR_INVALID_PARAM

VOLTAGE_LEVEL_INDEX is not valid

1

FLAGS

uint32

Reserved and must be 0.

2

REMAINING

uint32

Remaining number of levels.

3

RETURNED

uint32

Number of levels returned so far.

4

VOLTAGE[0]

uint32

Voltage array where each entry in the array is a voltage level in microvolts(uV).

N is specified by the GET_DOMAIN_ATTRIBUTES.NUM_LEVELS. Voltage represented in microvolt (uV).

If the bits in GET_DOMAIN_ATTRIBUTES.FLAGS[31:30] are set to 0, VOLTAGE[0] contains a fixed voltage level in the array.
VOLTAGE[0]: volt_uV

If the bits in GET_DOMAIN_ATTRIBUTES.FLAGS[31:30] are set to 1, it means that the voltage array contains three entries as below:
VOLTAGE[0]: min_uV
VOLTAGE[1]: max_uV
VOLTAGE[2]: step_uV

If the bits in GET_DOMAIN_ATTRIBUTES.FLAGS[31:30] are set to 2, it indicates that the voltage array contains multiple groups of four entries. Each group represent a linear voltage range and consists of the following entries:
VOLTAGE[0] = min_uV
VOLTAGE[1] = min_sel
VOLTAGE[2] = max_sel
VOLTAGE[3] = step_uV

If the bits in GET_DOMAIN_ATTRIBUTES.FLAGS[31:30] are set to 3, it means that the entry array contains discrete voltage levels listed in ascending numeric order(Low index represents minimum voltage level, and high index represents maximum voltage level supported).
VOLTAGE[0]: Voltage0
VOLTAGE[1]: Voltage1
VOLTAGE[2]: Voltage2
VOLTAGE[N - 1]: Voltage(N – 1)

5

VOLTAGE[1]

int32

…​

VOLTAGE[N-1]

int32

Service: SET_DOMAIN_CONFIG

Set voltage config message enable or disable any domain. Enabling the voltage means applying the domain with the voltage level to operate normally. AP can enable the voltage to any domain without knowing the actual voltage levels. Disabling the voltage level means disabling the voltage supply to the domain.

CONFIG field encodes these discrete settings which do not require AP to know the voltage level

Table 9. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

1

CONFIG

uint32

Voltage domain config

Bits

Description

[31:1]

Reserved

[0]

0b0: Disable voltage for domain
0b1: Enable voltage for domain
Table 10. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found.

RPMI_ERROR_INVALID_PARAMETER

Voltage config is not supported by the spefified voltage domain.

Service: GET_DOMAIN_CONFIG

Get voltage config message request for the configuration of the voltage domain currently set.

Table 11. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

Table 12. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found.

1

CONFIG

uint32

Voltage domain config

Value

Description

0x0

Disabled

0x1

Enabled

Service: SET_DOMAIN_LEVEL

Set the voltage level in microvolts(uV) of a voltage domain

Table 13. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

1

VOLTAGE_LEVEL

int32

Voltage level

Table 14. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found.

RPMI_ERROR_INVALID_PARAMETER

Voltage level is not supported by specified voltage domain.

Service: GET_DOMAIN_LEVEL

Get the current voltage level in microvolts(uV) of a voltage domain.

Table 15. Request Data
Word Name Type Description

0

DOMAIN_ID

uint32

Voltage Domain ID

Table 16. Response Data
Word Name Type Description

0

STATUS

int32

Return Status Code

Error Code

Description

RPMI_SUCCESS

Service completed successfully.

RPMI_ERROR_NOT_FOUND

Voltage DOMAIN_ID not found.

1

VOLTAGE_LEVEL

int32

Voltage Level