Lines Matching refs:max96745
33 static bool max96745_vid_tx_active(struct max96745 *max96745) in max96745_vid_tx_active() argument
37 if (regmap_read(max96745->regmap, 0x0107, &val)) in max96745_vid_tx_active()
73 struct max96745 *max96745 = dev_get_drvdata(muxc->dev); in max96745_select() local
75 if (!max96745->idle_disc) in max96745_select()
79 regmap_update_bits(max96745->regmap, 0x0086, DIS_REM_CC, in max96745_select()
82 regmap_update_bits(max96745->regmap, 0x0076, DIS_REM_CC, in max96745_select()
90 struct max96745 *max96745 = dev_get_drvdata(muxc->dev); in max96745_deselect() local
92 if (!max96745->idle_disc) in max96745_deselect()
96 regmap_update_bits(max96745->regmap, 0x0086, DIS_REM_CC, in max96745_deselect()
99 regmap_update_bits(max96745->regmap, 0x0076, DIS_REM_CC, in max96745_deselect()
107 struct max96745 *max96745 = data; in max96745_power_off() local
109 if (max96745->pwdnb_gpio) in max96745_power_off()
110 gpiod_direction_output(max96745->pwdnb_gpio, 1); in max96745_power_off()
112 if (max96745->enable_gpio) in max96745_power_off()
113 gpiod_direction_output(max96745->enable_gpio, 0); in max96745_power_off()
116 static void max96745_power_on(struct max96745 *max96745) in max96745_power_on() argument
118 if (max96745_vid_tx_active(max96745)) { in max96745_power_on()
119 extcon_set_state(max96745->extcon, EXTCON_JACK_VIDEO_OUT, true); in max96745_power_on()
123 if (max96745->enable_gpio) { in max96745_power_on()
124 gpiod_direction_output(max96745->enable_gpio, 1); in max96745_power_on()
128 if (max96745->pwdnb_gpio) { in max96745_power_on()
129 gpiod_direction_output(max96745->pwdnb_gpio, 0); in max96745_power_on()
134 regmap_write(max96745->regmap, 0x0070, 0x16); in max96745_power_on()
136 if (max96745->idle_disc) { in max96745_power_on()
137 regmap_update_bits(max96745->regmap, 0x0076, DIS_REM_CC, in max96745_power_on()
139 regmap_update_bits(max96745->regmap, 0x0086, DIS_REM_CC, in max96745_power_on()
148 struct max96745 *max96745 = dev_get_drvdata(device); in line_fault_monitor_show() local
151 regmap_read(max96745->regmap, 0x0005, &pu_lf); in line_fault_monitor_show()
162 regmap_read(max96745->regmap, 0x0026, &lf); in line_fault_monitor_show()
174 regmap_read(max96745->regmap, 0x0027, &lf); in line_fault_monitor_show()
201 static int max96745_sysfs_add(struct max96745 *max96745) in max96745_sysfs_add() argument
203 struct device *dev = max96745->dev; in max96745_sysfs_add()
209 regmap_update_bits(max96745->regmap, 0x0005, in max96745_sysfs_add()
225 struct max96745 *max96745; in max96745_i2c_probe() local
236 max96745 = devm_kzalloc(dev, sizeof(*max96745), GFP_KERNEL); in max96745_i2c_probe()
237 if (!max96745) in max96745_i2c_probe()
240 max96745->idle_disc = device_property_read_bool(dev, "i2c-mux-idle-disconnect"); in max96745_i2c_probe()
242 max96745->muxc = i2c_mux_alloc(client->adapter, dev, nr, in max96745_i2c_probe()
245 if (!max96745->muxc) in max96745_i2c_probe()
248 max96745->dev = dev; in max96745_i2c_probe()
249 i2c_set_clientdata(client, max96745); in max96745_i2c_probe()
251 max96745->regmap = devm_regmap_init_i2c(client, &max96745_regmap_config); in max96745_i2c_probe()
252 if (IS_ERR(max96745->regmap)) in max96745_i2c_probe()
253 return dev_err_probe(dev, PTR_ERR(max96745->regmap), in max96745_i2c_probe()
256 max96745->enable_gpio = devm_gpiod_get_optional(dev, "enable", in max96745_i2c_probe()
258 if (IS_ERR(max96745->enable_gpio)) in max96745_i2c_probe()
259 return dev_err_probe(dev, PTR_ERR(max96745->enable_gpio), in max96745_i2c_probe()
262 max96745->pwdnb_gpio = devm_gpiod_get_optional(dev, "pwdnb", in max96745_i2c_probe()
264 if (IS_ERR(max96745->pwdnb_gpio)) in max96745_i2c_probe()
265 return dev_err_probe(dev, PTR_ERR(max96745->pwdnb_gpio), in max96745_i2c_probe()
268 max96745->extcon = devm_extcon_dev_allocate(dev, max96745_cable); in max96745_i2c_probe()
269 if (IS_ERR(max96745->extcon)) in max96745_i2c_probe()
270 return dev_err_probe(dev, PTR_ERR(max96745->extcon), in max96745_i2c_probe()
273 ret = devm_extcon_dev_register(dev, max96745->extcon); in max96745_i2c_probe()
278 max96745_power_on(max96745); in max96745_i2c_probe()
280 ret = devm_add_action_or_reset(dev, max96745_power_off, max96745); in max96745_i2c_probe()
293 ret = i2c_mux_add_adapter(max96745->muxc, 0, nr, 0); in max96745_i2c_probe()
295 i2c_mux_del_adapters(max96745->muxc); in max96745_i2c_probe()
300 ret = max96745_sysfs_add(max96745); in max96745_i2c_probe()
309 struct max96745 *max96745 = i2c_get_clientdata(client); in max96745_i2c_remove() local
311 i2c_mux_del_adapters(max96745->muxc); in max96745_i2c_remove()
318 struct max96745 *max96745 = i2c_get_clientdata(client); in max96745_i2c_shutdown() local
320 max96745_power_off(max96745); in max96745_i2c_shutdown()
325 struct max96745 *max96745 = dev_get_drvdata(dev); in max96745_suspend() local
327 regcache_mark_dirty(max96745->regmap); in max96745_suspend()
328 regcache_cache_only(max96745->regmap, true); in max96745_suspend()
335 struct max96745 *max96745 = dev_get_drvdata(dev); in max96745_resume() local
337 regcache_cache_only(max96745->regmap, false); in max96745_resume()
338 regcache_sync(max96745->regmap); in max96745_resume()