/** * Reads TSIF STC from TSPP * * @demux: demux device * @num: STC number. 0 for TSIF0 and 1 for TSIF1. * @stc: STC value * @base: divisor to get 90KHz value * * Return error code */ static int mpq_tsif_dmx_get_stc(struct dmx_demux *demux, unsigned int num, u64 *stc, unsigned int *base) { struct tsif_driver_info *tsif_driver; u32 tcr_counter; if (!demux || !stc || !base) return -EINVAL; if (num == 0) tsif_driver = &mpq_dmx_tsif_info.tsif[0].tsif_driver; else if (num == 1) tsif_driver = &mpq_dmx_tsif_info.tsif[1].tsif_driver; else return -EINVAL; if (!tsif_driver->tsif_handler) return -ENODEV; tsif_get_ref_clk_counter(tsif_driver->tsif_handler, &tcr_counter); *stc = ((u64)tcr_counter) * 256; /* conversion to 27MHz */ *base = 300; /* divisor to get 90KHz clock from stc value */ return 0; }
static int mpq_tsif_dmx_get_stc(struct dmx_demux *demux, unsigned int num, u64 *stc, unsigned int *base) { struct tsif_driver_info *tsif_driver; u32 tcr_counter; if (!demux || !stc || !base) return -EINVAL; if (num == 0) tsif_driver = &mpq_dmx_tsif_info.tsif[0].tsif_driver; else if (num == 1) tsif_driver = &mpq_dmx_tsif_info.tsif[1].tsif_driver; else return -EINVAL; if (!tsif_driver->tsif_handler) return -ENODEV; tsif_get_ref_clk_counter(tsif_driver->tsif_handler, &tcr_counter); *stc = ((u64)tcr_counter) * 256; *base = 300; return 0; }