
Create OFE HW layer which contains device, soc, and core files. Device file provides the prob functionality and OFE dev interface to ICP HW MGR. Core file provides HW related functionalities such as PC, reset, init/deinit hw, etc. Soc file provides intermediate functions to utilize camera soc APIs such as DT parsing, Clock update, etc. Modify Kbuild to include compilation of the source files. Update camera main file to invoke ofe init module function during camera module init. Update camera main header file to allow CRM to match OFE driver for component bind. Update OFE HW register addresses such as power status/power ctrl, reset, irq, etc. CRs-Fixed: 3266673 Change-Id: I97efe095801b1b42e9de07aeba6f26112cb8f92b Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
170 lines
4.7 KiB
C
170 lines
4.7 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2020-2021, The Linux Foundation. All rights reserved.
|
|
* Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
|
|
*/
|
|
|
|
#ifndef CAMERA_MAIN_H
|
|
#define CAMERA_MAIN_H
|
|
|
|
#include <linux/platform_device.h>
|
|
#include <linux/i2c.h>
|
|
#include <linux/component.h>
|
|
|
|
extern struct platform_driver cam_sync_driver;
|
|
extern struct platform_driver cam_smmu_driver;
|
|
extern struct platform_driver cam_cpas_driver;
|
|
extern struct platform_driver cam_cdm_intf_driver;
|
|
extern struct platform_driver cam_hw_cdm_driver;
|
|
#ifdef CONFIG_SPECTRA_ISP
|
|
extern struct platform_driver cam_ife_csid_driver;
|
|
extern struct platform_driver cam_ife_csid_lite_driver;
|
|
extern struct platform_driver cam_vfe_driver;
|
|
extern struct platform_driver cam_sfe_driver;
|
|
extern struct platform_driver isp_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_TFE
|
|
extern struct platform_driver cam_csid_ppi100_driver;
|
|
extern struct platform_driver cam_tfe_driver;
|
|
extern struct platform_driver cam_tfe_csid_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_SENSOR
|
|
extern struct platform_driver cam_res_mgr_driver;
|
|
extern struct platform_driver cci_driver;
|
|
extern struct platform_driver csiphy_driver;
|
|
extern struct platform_driver cam_actuator_platform_driver;
|
|
extern struct platform_driver cam_sensor_platform_driver;
|
|
extern struct platform_driver cam_eeprom_platform_driver;
|
|
extern struct platform_driver cam_ois_platform_driver;
|
|
extern struct platform_driver cam_tpg_driver;
|
|
extern struct i2c_driver cam_actuator_i2c_driver;
|
|
extern struct i2c_driver cam_flash_i2c_driver;
|
|
extern struct i2c_driver cam_ois_i2c_driver;
|
|
extern struct i2c_driver cam_eeprom_i2c_driver;
|
|
extern struct i2c_driver cam_sensor_i2c_driver;
|
|
#if IS_REACHABLE(CONFIG_LEDS_QPNP_FLASH_V2) || \
|
|
IS_REACHABLE(CONFIG_LEDS_QTI_FLASH)
|
|
extern struct platform_driver cam_flash_platform_driver;
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_ICP
|
|
extern struct platform_driver cam_icp_v1_driver;
|
|
extern struct platform_driver cam_icp_v2_driver;
|
|
extern struct platform_driver cam_ipe_driver;
|
|
extern struct platform_driver cam_bps_driver;
|
|
extern struct platform_driver cam_icp_driver;
|
|
extern struct platform_driver cam_ofe_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_OPE
|
|
extern struct platform_driver cam_ope_driver;
|
|
extern struct platform_driver cam_ope_subdev_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_CRE
|
|
extern struct platform_driver cam_cre_driver;
|
|
extern struct platform_driver cam_cre_subdev_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_JPEG
|
|
extern struct platform_driver cam_jpeg_enc_driver;
|
|
extern struct platform_driver cam_jpeg_dma_driver;
|
|
extern struct platform_driver jpeg_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_FD
|
|
extern struct platform_driver cam_fd_hw_driver;
|
|
extern struct platform_driver cam_fd_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_LRME
|
|
extern struct platform_driver cam_lrme_hw_driver;
|
|
extern struct platform_driver cam_lrme_driver;
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_CUSTOM
|
|
extern struct platform_driver cam_custom_hw_sub_mod_driver;
|
|
extern struct platform_driver cam_custom_csid_driver;
|
|
extern struct platform_driver custom_driver;
|
|
#endif
|
|
|
|
/*
|
|
* Drivers to be bound by component framework in this order with
|
|
* CRM as master
|
|
*/
|
|
static struct platform_driver *const cam_component_platform_drivers[] = {
|
|
/* BASE */
|
|
&cam_sync_driver,
|
|
&cam_smmu_driver,
|
|
&cam_cpas_driver,
|
|
&cam_cdm_intf_driver,
|
|
&cam_hw_cdm_driver,
|
|
#ifdef CONFIG_SPECTRA_TFE
|
|
&cam_csid_ppi100_driver,
|
|
&cam_tfe_driver,
|
|
&cam_tfe_csid_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_ISP
|
|
&cam_ife_csid_driver,
|
|
&cam_ife_csid_lite_driver,
|
|
&cam_vfe_driver,
|
|
&cam_sfe_driver,
|
|
&isp_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_SENSOR
|
|
&cam_res_mgr_driver,
|
|
&cci_driver,
|
|
&csiphy_driver,
|
|
&cam_actuator_platform_driver,
|
|
&cam_sensor_platform_driver,
|
|
&cam_eeprom_platform_driver,
|
|
&cam_ois_platform_driver,
|
|
&cam_tpg_driver,
|
|
#if IS_REACHABLE(CONFIG_LEDS_QPNP_FLASH_V2) || \
|
|
IS_REACHABLE(CONFIG_LEDS_QTI_FLASH)
|
|
&cam_flash_platform_driver,
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_ICP
|
|
&cam_icp_v1_driver,
|
|
&cam_icp_v2_driver,
|
|
&cam_ipe_driver,
|
|
&cam_bps_driver,
|
|
&cam_icp_driver,
|
|
&cam_ofe_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_OPE
|
|
&cam_ope_driver,
|
|
&cam_ope_subdev_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_JPEG
|
|
&cam_jpeg_enc_driver,
|
|
&cam_jpeg_dma_driver,
|
|
&jpeg_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_CRE
|
|
&cam_cre_driver,
|
|
&cam_cre_subdev_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_FD
|
|
&cam_fd_hw_driver,
|
|
&cam_fd_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_LRME
|
|
&cam_lrme_hw_driver,
|
|
&cam_lrme_driver,
|
|
#endif
|
|
#ifdef CONFIG_SPECTRA_CUSTOM
|
|
&cam_custom_hw_sub_mod_driver,
|
|
&cam_custom_csid_driver,
|
|
&custom_driver,
|
|
#endif
|
|
};
|
|
|
|
|
|
static struct i2c_driver *const cam_component_i2c_drivers[] = {
|
|
#ifdef CONFIG_SPECTRA_SENSOR
|
|
&cam_actuator_i2c_driver,
|
|
&cam_flash_i2c_driver,
|
|
&cam_ois_i2c_driver,
|
|
&cam_eeprom_i2c_driver,
|
|
&cam_sensor_i2c_driver,
|
|
#endif
|
|
};
|
|
|
|
#endif /* CAMERA_MAIN_H */
|