#include <linux/delay.h>
#include <linux/device.h>
#include <linux/io.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/platform_device.h>
#include <linux/reset-controller.h>
#include <linux/soc/mediatek/mtk-mmsys.h>
#include "mtk-mmsys.h"
#include "mt8167-mmsys.h"
#include "mt8173-mmsys.h"
#include "mt8183-mmsys.h"
#include "mt8186-mmsys.h"
#include "mt8188-mmsys.h"
#include "mt8192-mmsys.h"
#include "mt8195-mmsys.h"
#include "mt8365-mmsys.h"
#define MMSYS_SW_RESET_PER_REG …
static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt2712_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt6779_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt6795_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt6797_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8167_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8186_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8188_vdosys0_driver_data = …;
static const struct mtk_mmsys_driver_data mt8188_vdosys1_driver_data = …;
static const struct mtk_mmsys_driver_data mt8188_vppsys0_driver_data = …;
static const struct mtk_mmsys_driver_data mt8188_vppsys1_driver_data = …;
static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data = …;
static const struct mtk_mmsys_driver_data mt8195_vdosys0_driver_data = …;
static const struct mtk_mmsys_driver_data mt8195_vdosys1_driver_data = …;
static const struct mtk_mmsys_driver_data mt8195_vppsys0_driver_data = …;
static const struct mtk_mmsys_driver_data mt8195_vppsys1_driver_data = …;
static const struct mtk_mmsys_driver_data mt8365_mmsys_driver_data = …;
struct mtk_mmsys { … };
static void mtk_mmsys_update_bits(struct mtk_mmsys *mmsys, u32 offset, u32 mask, u32 val,
struct cmdq_pkt *cmdq_pkt)
{ … }
void mtk_mmsys_ddp_connect(struct device *dev,
enum mtk_ddp_comp_id cur,
enum mtk_ddp_comp_id next)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_ddp_disconnect(struct device *dev,
enum mtk_ddp_comp_id cur,
enum mtk_ddp_comp_id next)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_merge_async_config(struct device *dev, int idx, int width, int height,
struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_hdr_config(struct device *dev, int be_width, int be_height,
struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_mixer_in_config(struct device *dev, int idx, bool alpha_sel, u16 alpha,
u8 mode, u32 biwidth, struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_mixer_in_channel_swap(struct device *dev, int idx, bool channel_swap,
struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_ddp_dpi_fmt_config(struct device *dev, u32 val)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_vpp_rsz_merge_config(struct device *dev, u32 id, bool enable,
struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
void mtk_mmsys_vpp_rsz_dcm_config(struct device *dev, bool enable,
struct cmdq_pkt *cmdq_pkt)
{ … }
EXPORT_SYMBOL_GPL(…);
static int mtk_mmsys_reset_update(struct reset_controller_dev *rcdev, unsigned long id,
bool assert)
{ … }
static int mtk_mmsys_reset_assert(struct reset_controller_dev *rcdev, unsigned long id)
{ … }
static int mtk_mmsys_reset_deassert(struct reset_controller_dev *rcdev, unsigned long id)
{ … }
static int mtk_mmsys_reset(struct reset_controller_dev *rcdev, unsigned long id)
{ … }
static const struct reset_control_ops mtk_mmsys_reset_ops = …;
static int mtk_mmsys_probe(struct platform_device *pdev)
{ … }
static void mtk_mmsys_remove(struct platform_device *pdev)
{ … }
static const struct of_device_id of_match_mtk_mmsys[] = …;
MODULE_DEVICE_TABLE(of, of_match_mtk_mmsys);
static struct platform_driver mtk_mmsys_drv = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;