smi_config_util.c 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include <asm/io.h>
  2. #include <linux/string.h>
  3. #include "smi_reg.h"
  4. #include "mt_smi.h"
  5. #include "smi_common.h"
  6. #include "smi_configuration.h"
  7. #include "smi_config_util.h"
  8. int smi_bus_regs_setting(int profile, struct SMI_SETTING *settings)
  9. {
  10. int i = 0;
  11. int j = 0;
  12. if (!settings || profile < 0 || profile >= SMI_BWC_SCEN_CNT)
  13. return -1;
  14. if (settings->smi_common_reg_num == 0)
  15. return -1;
  16. /* set regs of common */
  17. SMIMSG("Current Scen:%d", profile);
  18. for (i = 0 ; i < settings->smi_common_reg_num ; ++i) {
  19. M4U_WriteReg32(SMI_COMMON_EXT_BASE,
  20. settings->smi_common_setting_vals[i].offset,
  21. settings->smi_common_setting_vals[i].value);
  22. }
  23. /* set regs of larbs */
  24. for (i = 0 ; i < SMI_LARB_NR ; ++i)
  25. for (j = 0 ; j < settings->smi_larb_reg_num[i] ; ++j) {
  26. M4U_WriteReg32(gLarbBaseAddr[i],
  27. settings->smi_larb_setting_vals[i][j].offset,
  28. settings->smi_larb_setting_vals[i][j].value);
  29. }
  30. return 0;
  31. }
  32. void save_default_common_val(int *is_default_value_saved, unsigned int *default_val_smi_array)
  33. {
  34. if (!*is_default_value_saved) {
  35. int i = 0;
  36. SMIMSG("Save default config:\n");
  37. for (i = 0 ; i < SMI_LARB_NR ; ++i)
  38. default_val_smi_array[i] = M4U_ReadReg32(SMI_COMMON_EXT_BASE, smi_common_l1arb_offset[i]);
  39. *is_default_value_saved = 1;
  40. }
  41. }