struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock) { struct radeon_hdmi_acr res; u8 i; for (i = 0; r600_hdmi_predefined_acr[i].clock != clock && r600_hdmi_predefined_acr[i].clock != 0; i++) ; res = r600_hdmi_predefined_acr[i]; /* In case some CTS are missing */ r600_hdmi_calc_cts(clock, &res.cts_32khz, res.n_32khz, 32000); r600_hdmi_calc_cts(clock, &res.cts_44_1khz, res.n_44_1khz, 44100); r600_hdmi_calc_cts(clock, &res.cts_48khz, res.n_48khz, 48000); return res; }
struct radeon_hdmi_acr r600_hdmi_acr(uint32_t clock) { struct radeon_hdmi_acr res; u8 i; /* Precalculated values for common clocks */ for (i = 0; i < ARRAY_SIZE(r600_hdmi_predefined_acr); i++) { if (r600_hdmi_predefined_acr[i].clock == clock) return r600_hdmi_predefined_acr[i]; } /* And odd clocks get manually calculated */ r600_hdmi_calc_cts(clock, &res.cts_32khz, &res.n_32khz, 32000); r600_hdmi_calc_cts(clock, &res.cts_44_1khz, &res.n_44_1khz, 44100); r600_hdmi_calc_cts(clock, &res.cts_48khz, &res.n_48khz, 48000); return res; }