Skip to content

Commit d4432f1

Browse files
Gangliang Xiealexdeucher
authored andcommitted
drm/amdgpu: add wrapper functions for pmfw eeprom interface
add wrapper functions for pmfw eeprom interface, for these interfaces to be easily and safely called Signed-off-by: Gangliang Xie <ganglxie@amd.com> Reviewed-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent f6cdcbd commit d4432f1

2 files changed

Lines changed: 119 additions & 0 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.c

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1609,3 +1609,101 @@ bool amdgpu_ras_smu_eeprom_supported(struct amdgpu_device *adev)
16091609

16101610
return !!(flags & RAS_SMU_FEATURE_BIT__RAS_EEPROM);
16111611
}
1612+
1613+
int amdgpu_ras_smu_get_table_version(struct amdgpu_device *adev,
1614+
uint32_t *table_version)
1615+
{
1616+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1617+
1618+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1619+
return -EOPNOTSUPP;
1620+
1621+
if (smu_ras_drv->smu_eeprom_funcs->get_ras_table_version)
1622+
return smu_ras_drv->smu_eeprom_funcs->get_ras_table_version(adev,
1623+
table_version);
1624+
return -EOPNOTSUPP;
1625+
}
1626+
1627+
int amdgpu_ras_smu_get_badpage_count(struct amdgpu_device *adev,
1628+
uint32_t *count, uint32_t timeout)
1629+
{
1630+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1631+
1632+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1633+
return -EOPNOTSUPP;
1634+
1635+
if (smu_ras_drv->smu_eeprom_funcs->get_badpage_count)
1636+
return smu_ras_drv->smu_eeprom_funcs->get_badpage_count(adev,
1637+
count, timeout);
1638+
return -EOPNOTSUPP;
1639+
}
1640+
1641+
int amdgpu_ras_smu_get_badpage_mca_addr(struct amdgpu_device *adev,
1642+
uint16_t index, uint64_t *mca_addr)
1643+
{
1644+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1645+
1646+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1647+
return -EOPNOTSUPP;
1648+
1649+
if (smu_ras_drv->smu_eeprom_funcs->get_badpage_mca_addr)
1650+
return smu_ras_drv->smu_eeprom_funcs->get_badpage_mca_addr(adev,
1651+
index, mca_addr);
1652+
return -EOPNOTSUPP;
1653+
}
1654+
1655+
int amdgpu_ras_smu_set_timestamp(struct amdgpu_device *adev,
1656+
uint64_t timestamp)
1657+
{
1658+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1659+
1660+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1661+
return -EOPNOTSUPP;
1662+
1663+
if (smu_ras_drv->smu_eeprom_funcs->set_timestamp)
1664+
return smu_ras_drv->smu_eeprom_funcs->set_timestamp(adev,
1665+
timestamp);
1666+
return -EOPNOTSUPP;
1667+
}
1668+
1669+
int amdgpu_ras_smu_get_timestamp(struct amdgpu_device *adev,
1670+
uint16_t index, uint64_t *timestamp)
1671+
{
1672+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1673+
1674+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1675+
return -EOPNOTSUPP;
1676+
1677+
if (smu_ras_drv->smu_eeprom_funcs->get_timestamp)
1678+
return smu_ras_drv->smu_eeprom_funcs->get_timestamp(adev,
1679+
index, timestamp);
1680+
return -EOPNOTSUPP;
1681+
}
1682+
1683+
int amdgpu_ras_smu_get_badpage_ipid(struct amdgpu_device *adev,
1684+
uint16_t index, uint64_t *ipid)
1685+
{
1686+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1687+
1688+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1689+
return -EOPNOTSUPP;
1690+
1691+
if (smu_ras_drv->smu_eeprom_funcs->get_badpage_ipid)
1692+
return smu_ras_drv->smu_eeprom_funcs->get_badpage_ipid(adev,
1693+
index, ipid);
1694+
return -EOPNOTSUPP;
1695+
}
1696+
1697+
int amdgpu_ras_smu_erase_ras_table(struct amdgpu_device *adev,
1698+
uint32_t *result)
1699+
{
1700+
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
1701+
1702+
if (!amdgpu_ras_smu_eeprom_supported(adev))
1703+
return -EOPNOTSUPP;
1704+
1705+
if (smu_ras_drv->smu_eeprom_funcs->erase_ras_table)
1706+
return smu_ras_drv->smu_eeprom_funcs->erase_ras_table(adev,
1707+
result);
1708+
return -EOPNOTSUPP;
1709+
}

drivers/gpu/drm/amd/amdgpu/amdgpu_ras_eeprom.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,27 @@ void amdgpu_ras_eeprom_check_and_recover(struct amdgpu_device *adev);
165165

166166
bool amdgpu_ras_smu_eeprom_supported(struct amdgpu_device *adev);
167167

168+
int amdgpu_ras_smu_get_table_version(struct amdgpu_device *adev,
169+
uint32_t *table_version);
170+
171+
int amdgpu_ras_smu_get_badpage_count(struct amdgpu_device *adev,
172+
uint32_t *count, uint32_t timeout);
173+
174+
int amdgpu_ras_smu_get_badpage_mca_addr(struct amdgpu_device *adev,
175+
uint16_t index, uint64_t *mca_addr);
176+
177+
int amdgpu_ras_smu_set_timestamp(struct amdgpu_device *adev,
178+
uint64_t timestamp);
179+
180+
int amdgpu_ras_smu_get_timestamp(struct amdgpu_device *adev,
181+
uint16_t index, uint64_t *timestamp);
182+
183+
int amdgpu_ras_smu_get_badpage_ipid(struct amdgpu_device *adev,
184+
uint16_t index, uint64_t *ipid);
185+
186+
int amdgpu_ras_smu_erase_ras_table(struct amdgpu_device *adev,
187+
uint32_t *result);
188+
168189
extern const struct file_operations amdgpu_ras_debugfs_eeprom_size_ops;
169190
extern const struct file_operations amdgpu_ras_debugfs_eeprom_table_ops;
170191

0 commit comments

Comments
 (0)