Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/amdsmu/amdsmu.h
| Show All 19 Lines | |||||
| #include <dev/amdsmu/amdsmu_reg.h> | #include <dev/amdsmu/amdsmu_reg.h> | ||||
| #define SMU_RES_READ_PERIOD_US 50 | #define SMU_RES_READ_PERIOD_US 50 | ||||
| #define SMU_RES_READ_MAX 20000 | #define SMU_RES_READ_MAX 20000 | ||||
| static const struct amdsmu_product { | static const struct amdsmu_product { | ||||
| uint16_t amdsmu_vendorid; | uint16_t amdsmu_vendorid; | ||||
| uint16_t amdsmu_deviceid; | uint16_t amdsmu_deviceid; | ||||
| int16_t idlemask_reg; | |||||
| size_t ip_block_count; | |||||
| } amdsmu_products[] = { | } amdsmu_products[] = { | ||||
| { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_REMBRANDT_ROOT }, | { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_CEZANNE_ROOT, | ||||
| { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_PHOENIX_ROOT }, | SMU_REG_IDLEMASK_CEZANNE, 12 }, | ||||
| { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_STRIX_POINT_ROOT }, | { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_REMBRANDT_ROOT, | ||||
| SMU_REG_IDLEMASK_PHOENIX, 12 }, | |||||
| { CPU_VENDOR_AMD, PCI_DEVICEID_AMD_PHOENIX_ROOT, | |||||
| SMU_REG_IDLEMASK_PHOENIX, 21 }, | |||||
| /* | |||||
| * XXX Strix Point (PCI_DEVICEID_AMD_STRIX_POINT_ROOT) doesn't support | |||||
| * S0i3 and thus doesn't have an idlemask. Since our driver doesn't | |||||
| * yet understand this, don't attach to Strix Point for the time being. | |||||
| */ | |||||
| }; | }; | ||||
| static const char *const amdsmu_ip_blocks_names[] = { | static const char *const amdsmu_ip_blocks_names[] = { | ||||
| "DISPLAY", | "DISPLAY", | ||||
| "CPU", | "CPU", | ||||
| "GFX", | "GFX", | ||||
| "VDD", | "VDD", | ||||
| "ACP", | "ACP", | ||||
| Show All 14 Lines | static const char *const amdsmu_ip_blocks_names[] = { | ||||
| "IPU", | "IPU", | ||||
| "UMSCH", | "UMSCH", | ||||
| "VPE", | "VPE", | ||||
| }; | }; | ||||
| CTASSERT(nitems(amdsmu_ip_blocks_names) <= 32); | CTASSERT(nitems(amdsmu_ip_blocks_names) <= 32); | ||||
| struct amdsmu_softc { | struct amdsmu_softc { | ||||
| const struct amdsmu_product *product; | |||||
| struct sysctl_ctx_list *sysctlctx; | struct sysctl_ctx_list *sysctlctx; | ||||
| struct sysctl_oid *sysctlnode; | struct sysctl_oid *sysctlnode; | ||||
| struct eventhandler_entry *eh_suspend; | struct eventhandler_entry *eh_suspend; | ||||
| struct eventhandler_entry *eh_resume; | struct eventhandler_entry *eh_resume; | ||||
| struct resource *res; | struct resource *res; | ||||
| bus_space_tag_t bus_tag; | bus_space_tag_t bus_tag; | ||||
| bus_space_handle_t smu_space; | bus_space_handle_t smu_space; | ||||
| bus_space_handle_t reg_space; | bus_space_handle_t reg_space; | ||||
| uint8_t smu_program; | uint8_t smu_program; | ||||
| uint8_t smu_maj, smu_min, smu_rev; | uint8_t smu_maj, smu_min, smu_rev; | ||||
| uint32_t active_ip_blocks; | uint32_t active_ip_blocks; | ||||
| struct sysctl_oid *ip_blocks_sysctlnode; | struct sysctl_oid *ip_blocks_sysctlnode; | ||||
| size_t ip_block_count; | |||||
| struct sysctl_oid *ip_block_sysctlnodes[ | struct sysctl_oid *ip_block_sysctlnodes[ | ||||
| nitems(amdsmu_ip_blocks_names)]; | nitems(amdsmu_ip_blocks_names)]; | ||||
| bool ip_blocks_active[ | bool ip_blocks_active[ | ||||
| nitems(amdsmu_ip_blocks_names)]; | nitems(amdsmu_ip_blocks_names)]; | ||||
| bus_space_handle_t metrics_space; | bus_space_handle_t metrics_space; | ||||
| struct amdsmu_metrics metrics; | struct amdsmu_metrics metrics; | ||||
| uint32_t idlemask; | uint32_t idlemask; | ||||
| Show All 15 Lines | |||||