#include <linux/firmware.h>
#include "radeon.h"
#include "rv770d.h"
#include "rv770_dpm.h"
#include "rv770_smc.h"
#include "atom.h"
#include "radeon_ucode.h"
#define FIRST_SMC_INT_VECT_REG …
#define FIRST_INT_VECT_S19 …
static const u8 rv770_smc_int_vectors[] = …;
static const u8 rv730_smc_int_vectors[] = …;
static const u8 rv710_smc_int_vectors[] = …;
static const u8 rv740_smc_int_vectors[] = …;
static const u8 cedar_smc_int_vectors[] = …;
static const u8 redwood_smc_int_vectors[] = …;
static const u8 juniper_smc_int_vectors[] = …;
static const u8 cypress_smc_int_vectors[] = …;
static const u8 barts_smc_int_vectors[] = …;
static const u8 turks_smc_int_vectors[] = …;
static const u8 caicos_smc_int_vectors[] = …;
static const u8 cayman_smc_int_vectors[] = …;
static int rv770_set_smc_sram_address(struct radeon_device *rdev,
u16 smc_address, u16 limit)
{ … }
int rv770_copy_bytes_to_smc(struct radeon_device *rdev,
u16 smc_start_address, const u8 *src,
u16 byte_count, u16 limit)
{ … }
static int rv770_program_interrupt_vectors(struct radeon_device *rdev,
u32 smc_first_vector, const u8 *src,
u32 byte_count)
{ … }
void rv770_start_smc(struct radeon_device *rdev)
{ … }
void rv770_reset_smc(struct radeon_device *rdev)
{ … }
void rv770_stop_smc_clock(struct radeon_device *rdev)
{ … }
void rv770_start_smc_clock(struct radeon_device *rdev)
{ … }
bool rv770_is_smc_running(struct radeon_device *rdev)
{ … }
PPSMC_Result rv770_send_msg_to_smc(struct radeon_device *rdev, PPSMC_Msg msg)
{ … }
PPSMC_Result rv770_wait_for_smc_inactive(struct radeon_device *rdev)
{ … }
static void rv770_clear_smc_sram(struct radeon_device *rdev, u16 limit)
{ … }
int rv770_load_smc_ucode(struct radeon_device *rdev,
u16 limit)
{ … }
int rv770_read_smc_sram_dword(struct radeon_device *rdev,
u16 smc_address, u32 *value, u16 limit)
{ … }
int rv770_write_smc_sram_dword(struct radeon_device *rdev,
u16 smc_address, u32 value, u16 limit)
{ … }