{
struct device *i2c_dev = client->dev.parent->parent;
struct pinctrl *pinctrl_i2c = NULL;
-
info("(%s):onoff(%d)\n", __func__, onoff);
if (onoff) {
/* ON */
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
-
+ pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "default");
+ if (IS_ERR_OR_NULL(pinctrl_i2c)) {
+ printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
+ } else {
+ devm_pinctrl_put(pinctrl_i2c);
+ }
pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "on_i2c");
if (IS_ERR_OR_NULL(pinctrl_i2c)) {
printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
}
} else {
/* OFF */
+ pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "default");
+ if (IS_ERR_OR_NULL(pinctrl_i2c)) {
+ printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
+ } else {
+ devm_pinctrl_put(pinctrl_i2c);
+ }
pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "off_i2c");
if (IS_ERR_OR_NULL(pinctrl_i2c)) {
printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
} else {
devm_pinctrl_put(pinctrl_i2c);
}
-
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
}
}
/* TODO: loading firmware */
fimc_is_s_int_comb_isp(core, false, INTMR2_INTMCIS22);
- // Workaround for Host to use ISP-SPI. Will be removed later.
- /* set pin output for Host to use SPI*/
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_ssn,
- PINCFG_PACK(PINCFG_TYPE_FUNC, FUNC_OUTPUT));
-
fimc_is_set_spi_config(spi_gpio, FIMC_IS_SPI_FUNC, false);
if (fimc_is_comp_is_valid(core) == 0) {
}
}
- // Workaround for Host to use ISP-SPI. Will be removed later.
- /* Set SPI pins to low before changing pin function */
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_sclk,
- PINCFG_PACK(PINCFG_TYPE_DAT, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_ssn,
- PINCFG_PACK(PINCFG_TYPE_DAT, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_miso,
- PINCFG_PACK(PINCFG_TYPE_DAT, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_mois,
- PINCFG_PACK(PINCFG_TYPE_DAT, 0));
-
- /* Set pin function for A5 to use SPI */
- pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_ssn,
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
-
set_bit(FIMC_IS_COMPANION_OPEN, &device->state);
device->companion_status = FIMC_IS_COMPANION_OPENDONE;
fimc_is_companion_wakeup(device);
if(core->use_ois) {
- if (!core->use_ois_hsi2c) {
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 1));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 1));
- }
-
if (!core->ois_ver_read) {
fimc_is_ois_check_fw(core);
}
fimc_is_ois_exif_data(core);
-
- if (!core->use_ois_hsi2c) {
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
- }
}
info("[COMP:D] %s(%d)status(%d)\n", __func__, ret, device->companion_status);
ois_device->ois_hsi2c_status, onoff);
if (onoff) {
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
-
+ pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "default");
+ if (IS_ERR_OR_NULL(pinctrl_i2c)) {
+ printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
+ } else {
+ devm_pinctrl_put(pinctrl_i2c);
+ }
pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "on_i2c");
if (IS_ERR_OR_NULL(pinctrl_i2c)) {
printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
devm_pinctrl_put(pinctrl_i2c);
}
} else {
+ pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "default");
+ if (IS_ERR_OR_NULL(pinctrl_i2c)) {
+ printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
+ } else {
+ devm_pinctrl_put(pinctrl_i2c);
+ }
pinctrl_i2c = devm_pinctrl_get_select(i2c_dev, "off_i2c");
if (IS_ERR_OR_NULL(pinctrl_i2c)) {
printk(KERN_ERR "%s: Failed to configure i2c pin\n", __func__);
} else {
devm_pinctrl_put(pinctrl_i2c);
}
-
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 2));
}
ois_device->ois_hsi2c_status = onoff;
}
devm_pinctrl_put(pinctrl_i2c);
}
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_FUNC, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-2",
- PINCFG_PACK(PINCFG_TYPE_PUD, 0));
- pin_config_set(FIMC_IS_SPI_PINNAME, "gpc2-3",
- PINCFG_PACK(PINCFG_TYPE_PUD, 0));
-
return 0;
}
}
void fimc_is_set_spi_config(struct fimc_is_spi_gpio *spi_gpio, int func, bool ssn) {
+#if 0
pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_sclk,
PINCFG_PACK(PINCFG_TYPE_FUNC, func));
pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_miso,
pin_config_set(FIMC_IS_SPI_PINNAME, spi_gpio->spi_ssn,
PINCFG_PACK(PINCFG_TYPE_FUNC, func));
}
+#endif
}
int fimc_is_sec_concord_fw_sel(struct fimc_is_core *core, struct device *dev,