root/drivers/media/dvb-frontends/cxd2880/cxd2880_tnrdmd_dvbt2.h
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * cxd2880_tnrdmd_dvbt2.h
 * Sony CXD2880 DVB-T2/T tuner + demodulator driver
 * control interface for DVB-T2
 *
 * Copyright (C) 2016, 2017, 2018 Sony Semiconductor Solutions Corporation
 */

#ifndef CXD2880_TNRDMD_DVBT2_H
#define CXD2880_TNRDMD_DVBT2_H

#include "cxd2880_common.h"
#include "cxd2880_tnrdmd.h"

enum cxd2880_tnrdmd_dvbt2_tune_info {
        CXD2880_TNRDMD_DVBT2_TUNE_INFO_OK,
        CXD2880_TNRDMD_DVBT2_TUNE_INFO_INVALID_PLP_ID
};

struct cxd2880_dvbt2_tune_param {
        u32 center_freq_khz;
        enum cxd2880_dtv_bandwidth bandwidth;
        u16 data_plp_id;
        enum cxd2880_dvbt2_profile profile;
        enum cxd2880_tnrdmd_dvbt2_tune_info tune_info;
};

#define CXD2880_DVBT2_TUNE_PARAM_PLPID_AUTO  0xffff

int cxd2880_tnrdmd_dvbt2_tune1(struct cxd2880_tnrdmd *tnr_dmd,
                               struct cxd2880_dvbt2_tune_param
                               *tune_param);

int cxd2880_tnrdmd_dvbt2_tune2(struct cxd2880_tnrdmd *tnr_dmd,
                               struct cxd2880_dvbt2_tune_param
                               *tune_param);

int cxd2880_tnrdmd_dvbt2_sleep_setting(struct cxd2880_tnrdmd
                                       *tnr_dmd);

int cxd2880_tnrdmd_dvbt2_check_demod_lock(struct cxd2880_tnrdmd
                                          *tnr_dmd,
                                          enum
                                          cxd2880_tnrdmd_lock_result
                                          *lock);

int cxd2880_tnrdmd_dvbt2_check_ts_lock(struct cxd2880_tnrdmd
                                       *tnr_dmd,
                                       enum
                                       cxd2880_tnrdmd_lock_result
                                       *lock);

int cxd2880_tnrdmd_dvbt2_set_plp_cfg(struct cxd2880_tnrdmd
                                     *tnr_dmd, u8 auto_plp,
                                     u8 plp_id);

int cxd2880_tnrdmd_dvbt2_diver_fef_setting(struct cxd2880_tnrdmd
                                           *tnr_dmd);

int cxd2880_tnrdmd_dvbt2_check_l1post_valid(struct cxd2880_tnrdmd
                                            *tnr_dmd,
                                            u8 *l1_post_valid);

#endif