Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions drivers/media/platform/intel/ipu-acpi-common.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
* GNU General Public License for more details.
*
*/

#include <linux/version.h>
#include <linux/platform_device.h>
#include <linux/pci.h>
#include <linux/gpio/consumer.h>
Expand Down
142 changes: 0 additions & 142 deletions drivers/media/platform/intel/ipu-acpi-pdata.c
Original file line number Diff line number Diff line change
Expand Up @@ -524,47 +524,6 @@ static void update_pdata(struct device *dev,
serdes_info.deser_num++;
}

#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC) || IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
static void set_lt_gpio(struct control_logic_data *ctl_data, struct sensor_platform_data **pdata,
bool is_dummy)
{
int i;

(*pdata)->irq_pin = -1;
(*pdata)->reset_pin = -1;
(*pdata)->detect_pin = -1;

if (ctl_data->completed && ctl_data->gpio_num > 0 && !is_dummy) {
for (i = 0; i < ctl_data->gpio_num; i++) {
/* check for unsupported GPIO function */
if (ctl_data->gpio[i].func != GPIO_RESET &&
ctl_data->gpio[i].func != GPIO_READY_STAT &&
ctl_data->gpio[i].func != GPIO_HDMI_DETECT)
dev_err(ctl_data->dev,
"IPU ACPI: Invalid GPIO func: %d\n",
ctl_data->gpio[i].func);

/* check for RESET selection in BIOS */
if (ctl_data->gpio[i].valid && ctl_data->gpio[i].func == GPIO_RESET)
(*pdata)->reset_pin = ctl_data->gpio[i].pin;

/* check for READY_STAT selection in BIOS */
if (ctl_data->gpio[i].valid && ctl_data->gpio[i].func == GPIO_READY_STAT) {
(*pdata)->irq_pin = ctl_data->gpio[i].pin;
(*pdata)->irq_pin_flags = IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING |
IRQF_ONESHOT;
strscpy((*pdata)->irq_pin_name, "READY_STAT", sizeof("READY_STAT"));
}

/* check for HDMI_DETECT selection in BIOS */
if (ctl_data->gpio[i].valid && ctl_data->gpio[i].func == GPIO_HDMI_DETECT)
(*pdata)->detect_pin = ctl_data->gpio[i].pin;
}
}
}
#endif

static void set_common_gpio(struct control_logic_data *ctl_data,
struct sensor_platform_data **pdata)
{
Expand Down Expand Up @@ -667,28 +626,12 @@ static int set_serdes_subdev(struct ipu_isys_subdev_info **serdes_sd,

/* board info */
strscpy(serdes_sdinfo[i].board_info.type, sensor_name, I2C_NAME_SIZE);
#if IS_ENABLED(CONFIG_VIDEO_D4XX)
if (!strcmp(sensor_name, D457_NAME)) {
if (i == 0)
serdes_sdinfo[i].board_info.addr = serdes_info.sensor_map_addr;
else
serdes_sdinfo[i].board_info.addr = serdes_info.sensor_map_addr_2;
} else
#endif
serdes_sdinfo[i].board_info.addr = serdes_info.sensor_map_addr + i;

serdes_sdinfo[i].board_info.platform_data = module_pdata[i];

/* serdes_subdev_info */
serdes_sdinfo[i].rx_port = i;
#if IS_ENABLED(CONFIG_VIDEO_D4XX)
if (!strcmp(sensor_name, D457_NAME)) {
if (i == 0)
serdes_sdinfo[i].ser_alias = serdes_info.ser_map_addr;
else
serdes_sdinfo[i].ser_alias = serdes_info.ser_map_addr_2;
} else
#endif
serdes_sdinfo[i].ser_alias = serdes_info.ser_map_addr + i;

serdes_sdinfo[i].phy_i2c_addr = serdes_info.phy_i2c_addr;
Expand Down Expand Up @@ -743,11 +686,6 @@ static int set_pdata(struct ipu_isys_subdev_info **sensor_sd,
pdata->i2c_slave_address = addr;

/* gpio */
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC) || IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
if (!strcmp(sensor_name, LT6911UXC_NAME) || !strcmp(sensor_name, LT6911UXE_NAME))
set_lt_gpio(ctl_data, &pdata, is_dummy);
else
#endif
set_common_gpio(ctl_data, &pdata);

(*sensor_sd)->i2c.board_info.platform_data = pdata;
Expand All @@ -760,15 +698,7 @@ static int set_pdata(struct ipu_isys_subdev_info **sensor_sd,

pr_debug("IPU ACPI: %s - Serdes connection", __func__);
/* use ascii */
#if IS_ENABLED(CONFIG_VIDEO_D4XX)
if (!strcmp(sensor_name, D457_NAME) && port >= 0) {
pdata->suffix = serdes_info.deser_num + SUFFIX_BASE;
pr_info("IPU ACPI: create %s %c, on deserializer port %d",
sensor_name, pdata->suffix, serdes_info.deser_num);
} else if (port >= 0) {
#else
if (port >= 0) {
#endif
pdata->suffix = port + SUFFIX_BASE;
pr_info("IPU ACPI: create %s on mipi port %d",
sensor_name, port);
Expand Down Expand Up @@ -810,59 +740,11 @@ static void set_serdes_info(struct device *dev, const char *sensor_name,
/* sensor mapped addr */
serdes_info.sensor_map_addr = cam_data->i2c[i++].addr;

#if IS_ENABLED(CONFIG_VIDEO_D4XX)
if (!strcmp(sensor_name, D457_NAME) && serdes_info.i2c_num == SENSOR_2X_I2C) {
/* 2nd group of mapped addr */
serdes_info.ser_map_addr_2 = cam_data->i2c[i++].addr;
serdes_info.sensor_map_addr_2 = cam_data->i2c[i++].addr;
}
#endif

serdes_info.gpio_powerup_seq = 0;

serdes_info.phy_i2c_addr = sensor_physical_addr;
}

#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC) || IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
static int populate_dummy(struct device *dev,
const char *sensor_name,
const char *hid_name,
struct sensor_bios_data *cam_data,
struct control_logic_data *ctl_data,
enum connection_type connect,
int link_freq)
{
struct ipu_isys_subdev_info *dummy;
unsigned short addr_dummy = 0x11;
int ret;

pr_debug("IPU ACPI: %s", __func__);

dummy = kzalloc(sizeof(*dummy), GFP_KERNEL);
if (!dummy)
return -ENOMEM;

ret = set_csi2(&dummy, cam_data->lanes, cam_data->pprval);
if (ret) {
kfree(dummy);
return ret;
}

set_i2c(&dummy, dev, sensor_name, addr_dummy, NULL);

ret = set_pdata(&dummy, dev, sensor_name, hid_name, ctl_data, cam_data->pprval,
cam_data->lanes, addr_dummy, 0, 0, true, connect, link_freq, 0);
if (ret) {
kfree(dummy);
return ret;
}

update_pdata(dev, dummy, connect);

return 0;
}
#endif

static int populate_sensor_pdata(struct device *dev,
struct ipu_isys_subdev_info **sensor_sd,
struct sensor_bios_data *cam_data,
Expand Down Expand Up @@ -893,21 +775,7 @@ static int populate_sensor_pdata(struct device *dev,
return -1;
}

#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC) || IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
/* LT use LT Control Logic type */
if (!strcmp(sensor_name, LT6911UXC_NAME) ||
!strcmp(sensor_name, LT6911UXE_NAME)) {
if (ctl_data->type != CL_LT) {
dev_err(dev, "IPU ACPI: Control Logic Type\n");
dev_err(dev, "for %s: %d is Incorrect\n",
sensor_name, ctl_data->type);
return -EINVAL;
}
/* Others use DISCRETE Control Logic */
} else if (ctl_data->type != CL_DISCRETE) {
#else
if (ctl_data->type != CL_DISCRETE) {
#endif
dev_err(dev, "IPU ACPI: Control Logic Type\n");
dev_err(dev, "for %s: %d is Incorrect\n",
sensor_name, ctl_data->type);
Expand Down Expand Up @@ -951,16 +819,6 @@ static int populate_sensor_pdata(struct device *dev,
update_pdata(dev, *sensor_sd, connect);

/* Lontium specific */
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC) || IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
if (!strcmp(sensor_name, LT6911UXC_NAME) || !strcmp(sensor_name, LT6911UXE_NAME)) {
if (cam_data->pprval != cam_data->link) {
ret = populate_dummy(dev, sensor_name, hid_name, cam_data, ctl_data, connect,
link_freq);
if (ret)
return ret;
}
}
#endif

return 0;
}
Expand Down
35 changes: 0 additions & 35 deletions drivers/media/platform/intel/ipu-acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,22 +57,6 @@ static const struct ipu_acpi_devices supported_devices[] = {
* { "ACPI ID", sensor_name, get_sensor_pdata, NULL, 0, TYPE, serdes_name,
* sensor_physical_addr, link_freq(mbps) }, // Custom HID
*/
#if IS_ENABLED(CONFIG_VIDEO_AR0234)
{ "INTC10C0", AR0234_NAME, get_sensor_pdata, NULL, 0, TYPE_DIRECT, NULL,
AR0234_I2C_ADDRESS, 1200 }, // AR0234 HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC)
{ "INTC10B1", LT6911UXC_NAME, get_sensor_pdata, NULL, 0, TYPE_DIRECT, NULL,
LT6911UXC_I2C_ADDRESS, 1200 }, // LT6911UXC HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
{ "INTC10C5", LT6911UXE_NAME, get_sensor_pdata, NULL, 0, TYPE_DIRECT, NULL,
LT6911UXE_I2C_ADDRESS, 1200 }, // LT6911UXE HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_D4XX)
{ "INTC10CD", D457_NAME, get_sensor_pdata, NULL, 0, TYPE_SERDES, D457_NAME,
D4XX_I2C_ADDRESS_0, 1200 }, // D457 HID
#endif

#if IS_ENABLED(CONFIG_VIDEO_MAX9X)
#if IS_ENABLED(CONFIG_VIDEO_ISX031)
Expand Down Expand Up @@ -101,28 +85,9 @@ static const struct acpi_device_id ipu_acpi_match[] = {
/*
* { "AR0234A", 0 }, // Custom HID
*/
#if IS_ENABLED(CONFIG_VIDEO_IMX390)
{ "INTC10C1", 0 }, // IMX390 HID
{ "INTC10CM", 0 }, // D3CMC68N-106-085 IMX390 HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_ISX031)
{ "INTC1031", 0 }, // ISX031 HID
{ "INTC031M", 0 }, // D3CMC68N-115-084 ISX031 HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_AR0234)
{ "INTC10C0", 0 }, // AR0234 HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXC)
{ "INTC10B1", 0 }, // LT6911UXC HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_LT6911UXE)
{ "INTC10C5", 0 }, // LT6911UXE HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_OV2311)
{ "INTC102R", 0 }, // OV2311 HID
#endif
#if IS_ENABLED(CONFIG_VIDEO_D4XX)
{ "INTC10CD", 0 }, // D457 HID
#endif
{},
};
Expand Down