Lines Matching refs:gs

152 	struct gmin_subdev *gs;
186 gs = find_gmin_subdev(subdev);
187 if (!gs)
191 pdata.subdevs[i].port = gs->csi_port;
192 pdata.subdevs[i].lanes = gs->csi_lanes;
525 static int gmin_subdev_add(struct gmin_subdev *gs)
527 struct i2c_client *client = v4l2_get_subdevdata(gs->subdev);
535 gs->clock_src = gmin_get_var_int(dev, false, "ClkSrc",
551 gs->csi_port = gmin_get_var_int(dev, false, "CsiPort", default_val);
552 gs->csi_lanes = gmin_get_var_int(dev, false, "CsiLanes", 1);
554 gs->gpio0 = gpiod_get_index(dev, NULL, 0, GPIOD_OUT_LOW);
555 if (IS_ERR(gs->gpio0))
556 gs->gpio0 = NULL;
560 gs->gpio1 = gpiod_get_index(dev, NULL, 1, GPIOD_OUT_LOW);
561 if (IS_ERR(gs->gpio1))
562 gs->gpio1 = NULL;
580 gs->v1p8_gpio = gmin_get_var_int(dev, true, "V1P8GPIO", -1);
581 gs->v2p8_gpio = gmin_get_var_int(dev, true, "V2P8GPIO", -1);
644 gs->pmc_clk = devm_clk_get(dev, gmin_pmc_clk_name);
645 if (IS_ERR(gs->pmc_clk)) {
646 ret = PTR_ERR(gs->pmc_clk);
662 ret = clk_prepare_enable(gs->pmc_clk);
664 clk_disable_unprepare(gs->pmc_clk);
668 gs->v1p8_reg = regulator_get(dev, "V1P8SX");
669 gs->v2p8_reg = regulator_get(dev, "V2P8SX");
671 gs->v1p2_reg = regulator_get(dev, "V1P2A");
672 gs->v2p8_vcm_reg = regulator_get(dev, "VPROG4B");
684 gs->eldo1_1p6v = gmin_get_var_int(dev, false,
687 gs->eldo1_sel_reg = gmin_get_var_int(dev, false,
690 gs->eldo1_ctrl_shift = gmin_get_var_int(dev, false,
693 gs->eldo2_1p8v = gmin_get_var_int(dev, false,
696 gs->eldo2_sel_reg = gmin_get_var_int(dev, false,
699 gs->eldo2_ctrl_shift = gmin_get_var_int(dev, false,
731 static int axp_regulator_set(struct device *dev, struct gmin_subdev *gs,
738 ret = gmin_i2c_write(dev, gs->pwm_i2c_addr, sel_reg, setting, 0xff);
744 ret = gmin_i2c_write(dev, gs->pwm_i2c_addr, ctrl_reg, val, 1 << shift);
766 static int axp_v1p8_on(struct device *dev, struct gmin_subdev *gs)
770 ret = axp_regulator_set(dev, gs, gs->eldo2_sel_reg, gs->eldo2_1p8v,
771 ELDO_CTRL_REG, gs->eldo2_ctrl_shift, true);
781 ret = axp_regulator_set(dev, gs, gs->eldo1_sel_reg, gs->eldo1_1p6v,
782 ELDO_CTRL_REG, gs->eldo1_ctrl_shift, true);
786 static int axp_v1p8_off(struct device *dev, struct gmin_subdev *gs)
790 ret = axp_regulator_set(dev, gs, gs->eldo1_sel_reg, gs->eldo1_1p6v,
791 ELDO_CTRL_REG, gs->eldo1_ctrl_shift, false);
798 ret = axp_regulator_set(dev, gs, gs->eldo2_sel_reg, gs->eldo2_1p8v,
799 ELDO_CTRL_REG, gs->eldo2_ctrl_shift, false);
805 struct gmin_subdev *gs = find_gmin_subdev(subdev);
807 if (gs) {
808 gpiod_set_value(gs->gpio0, on);
816 struct gmin_subdev *gs = find_gmin_subdev(subdev);
818 if (gs) {
819 gpiod_set_value(gs->gpio1, on);
827 struct gmin_subdev *gs = find_gmin_subdev(subdev);
829 if (!gs || gs->v1p2_on == on)
831 gs->v1p2_on = on;
834 if (gs->v1p2_reg) {
836 return regulator_enable(gs->v1p2_reg);
838 return regulator_disable(gs->v1p2_reg);
848 struct gmin_subdev *gs = find_gmin_subdev(subdev);
853 if (!gs || gs->v1p8_on == on)
856 if (gs->v1p8_gpio >= 0) {
858 gs->v1p8_gpio);
859 ret = gpio_request(gs->v1p8_gpio, "camera_v1p8_en");
861 ret = gpio_direction_output(gs->v1p8_gpio, 0);
866 gs->v1p8_on = on;
880 if (gs->v1p8_gpio >= 0)
881 gpio_set_value(gs->v1p8_gpio, on);
883 if (gs->v1p8_reg) {
884 regulator_set_voltage(gs->v1p8_reg, 1800000, 1800000);
886 ret = regulator_enable(gs->v1p8_reg);
888 ret = regulator_disable(gs->v1p8_reg);
896 ret = axp_v1p8_on(subdev->dev, gs);
898 ret = axp_v1p8_off(subdev->dev, gs);
903 ret = gmin_i2c_write(subdev->dev, gs->pwm_i2c_addr,
914 ret = gmin_i2c_write(subdev->dev, gs->pwm_i2c_addr,
929 struct gmin_subdev *gs = find_gmin_subdev(subdev);
934 if (WARN_ON(!gs))
937 if (gs->v2p8_gpio >= 0) {
939 gs->v2p8_gpio);
940 ret = gpio_request(gs->v2p8_gpio, "camera_v2p8");
942 ret = gpio_direction_output(gs->v2p8_gpio, 0);
947 if (gs->v2p8_on == on)
949 gs->v2p8_on = on;
963 if (gs->v2p8_gpio >= 0)
964 gpio_set_value(gs->v2p8_gpio, on);
966 if (gs->v2p8_reg) {
967 regulator_set_voltage(gs->v2p8_reg, 2900000, 2900000);
969 ret = regulator_enable(gs->v2p8_reg);
971 ret = regulator_disable(gs->v2p8_reg);
978 ret = axp_regulator_set(subdev->dev, gs, ALDO1_SEL_REG,
985 ret = gmin_i2c_write(subdev->dev, gs->pwm_i2c_addr,
996 ret = gmin_i2c_write(subdev->dev, gs->pwm_i2c_addr,
1012 struct gmin_subdev *gs = find_gmin_subdev(subdev);
1018 if (gs->clock_on == on)
1032 gs->clock_on = on;
1043 struct gmin_subdev *gs = find_gmin_subdev(subdev);
1046 if (gs->clock_on == !!on)
1050 ret = clk_set_rate(gs->pmc_clk,
1051 gs->clock_src ? CLK_RATE_19_2MHZ : CLK_RATE_25_0MHZ);
1055 gs->clock_src);
1057 ret = clk_prepare_enable(gs->pmc_clk);
1059 gs->clock_on = true;
1061 clk_disable_unprepare(gs->pmc_clk);
1062 gs->clock_on = false;
1103 struct gmin_subdev *gs = find_gmin_subdev(sd);
1105 if (!client || !gs)
1109 return camera_sensor_csi_alloc(sd, gs->csi_port, gs->csi_lanes,
1110 gs->csi_fmt, gs->csi_bayer);
1181 struct gmin_subdev *gs = find_gmin_subdev(subdev);
1184 if (!client || !gs)
1230 struct gmin_subdev *gs;
1232 gs = find_free_gmin_subdev_slot();
1233 gs->subdev = subdev;
1234 gs->csi_fmt = csi_format;
1235 gs->csi_bayer = csi_bayer;
1236 gs->pwm_i2c_addr = pmic_i2c_addr;
1238 gmin_subdev_add(gs);
1239 if (gs->pmc_clk)