• Home
  • Raw
  • Download

Lines Matching +full:switch +full:- +full:mode

2  * wm8350.c  --  Voltage and current regulation for the Wolfson WM8350 PMIC
108 return -EINVAL; in get_isink_val()
123 switch (isink) { in wm8350_isink_set_current()
137 return -EINVAL; in wm8350_isink_set_current()
149 switch (isink) { in wm8350_isink_get_current()
171 switch (isink) { in wm8350_isink_enable()
173 switch (wm8350->pmic.isink_A_dcdc) { in wm8350_isink_enable()
181 1 << (wm8350->pmic.isink_A_dcdc - in wm8350_isink_enable()
185 return -EINVAL; in wm8350_isink_enable()
189 switch (wm8350->pmic.isink_B_dcdc) { in wm8350_isink_enable()
197 1 << (wm8350->pmic.isink_B_dcdc - in wm8350_isink_enable()
201 return -EINVAL; in wm8350_isink_enable()
205 return -EINVAL; in wm8350_isink_enable()
215 switch (isink) { in wm8350_isink_disable()
217 switch (wm8350->pmic.isink_A_dcdc) { in wm8350_isink_disable()
221 1 << (wm8350->pmic.isink_A_dcdc - in wm8350_isink_disable()
227 return -EINVAL; in wm8350_isink_disable()
231 switch (wm8350->pmic.isink_B_dcdc) { in wm8350_isink_disable()
235 1 << (wm8350->pmic.isink_B_dcdc - in wm8350_isink_disable()
241 return -EINVAL; in wm8350_isink_disable()
245 return -EINVAL; in wm8350_isink_disable()
255 switch (isink) { in wm8350_isink_is_enabled()
263 return -EINVAL; in wm8350_isink_is_enabled()
272 switch (isink) { in wm8350_isink_enable_time()
280 return -EINVAL; in wm8350_isink_enable_time()
284 switch (reg & WM8350_CS1_ON_RAMP_MASK) { in wm8350_isink_enable_time()
295 switch (reg & WM8350_CS1_ON_RAMP_MASK) { in wm8350_isink_enable_time()
307 return -EINVAL; in wm8350_isink_enable_time()
311 int wm8350_isink_set_flash(struct wm8350 *wm8350, int isink, u16 mode, in wm8350_isink_set_flash() argument
315 switch (isink) { in wm8350_isink_set_flash()
318 (mode ? WM8350_CS1_FLASH_MODE : 0) | in wm8350_isink_set_flash()
324 (mode ? WM8350_CS2_FLASH_MODE : 0) | in wm8350_isink_set_flash()
329 return -EINVAL; in wm8350_isink_set_flash()
341 dev_dbg(wm8350->dev, "%s %d mV %d\n", __func__, dcdc, uV / 1000); in wm8350_dcdc_set_suspend_voltage()
343 switch (dcdc) { in wm8350_dcdc_set_suspend_voltage()
359 return -EINVAL; in wm8350_dcdc_set_suspend_voltage()
378 switch (dcdc) { in wm8350_dcdc_set_suspend_enable()
383 val | wm8350->pmic.dcdc1_hib_mode); in wm8350_dcdc_set_suspend_enable()
389 val | wm8350->pmic.dcdc3_hib_mode); in wm8350_dcdc_set_suspend_enable()
395 val | wm8350->pmic.dcdc4_hib_mode); in wm8350_dcdc_set_suspend_enable()
401 val | wm8350->pmic.dcdc6_hib_mode); in wm8350_dcdc_set_suspend_enable()
406 return -EINVAL; in wm8350_dcdc_set_suspend_enable()
418 switch (dcdc) { in wm8350_dcdc_set_suspend_disable()
421 wm8350->pmic.dcdc1_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_dcdc_set_suspend_disable()
427 wm8350->pmic.dcdc3_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_dcdc_set_suspend_disable()
433 wm8350->pmic.dcdc4_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_dcdc_set_suspend_disable()
439 wm8350->pmic.dcdc6_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_dcdc_set_suspend_disable()
446 return -EINVAL; in wm8350_dcdc_set_suspend_disable()
458 switch (dcdc) { in wm8350_dcdc25_set_suspend_enable()
472 return -EINVAL; in wm8350_dcdc25_set_suspend_enable()
483 switch (dcdc) { in wm8350_dcdc25_set_suspend_disable()
497 return -EINVAL; in wm8350_dcdc25_set_suspend_disable()
503 unsigned int mode) in wm8350_dcdc_set_suspend_mode() argument
509 switch (dcdc) { in wm8350_dcdc_set_suspend_mode()
511 hib_mode = &wm8350->pmic.dcdc1_hib_mode; in wm8350_dcdc_set_suspend_mode()
514 hib_mode = &wm8350->pmic.dcdc3_hib_mode; in wm8350_dcdc_set_suspend_mode()
517 hib_mode = &wm8350->pmic.dcdc4_hib_mode; in wm8350_dcdc_set_suspend_mode()
520 hib_mode = &wm8350->pmic.dcdc6_hib_mode; in wm8350_dcdc_set_suspend_mode()
525 return -EINVAL; in wm8350_dcdc_set_suspend_mode()
528 switch (mode) { in wm8350_dcdc_set_suspend_mode()
539 return -EINVAL; in wm8350_dcdc_set_suspend_mode()
556 dev_dbg(wm8350->dev, "%s %d mV %d\n", __func__, ldo, uV / 1000); in wm8350_ldo_set_suspend_voltage()
558 switch (ldo) { in wm8350_ldo_set_suspend_voltage()
572 return -EINVAL; in wm8350_ldo_set_suspend_voltage()
591 switch (ldo) { in wm8350_ldo_set_suspend_enable()
605 return -EINVAL; in wm8350_ldo_set_suspend_enable()
620 switch (ldo) { in wm8350_ldo_set_suspend_disable()
634 return -EINVAL; in wm8350_ldo_set_suspend_disable()
649 dev_dbg(wm8350->dev, "%s %d start %d stop %d\n", in wm8350_dcdc_set_slot()
654 return -EINVAL; in wm8350_dcdc_set_slot()
656 switch (dcdc) { in wm8350_dcdc_set_slot()
676 return -EINVAL; in wm8350_dcdc_set_slot()
696 dev_dbg(wm8350->dev, "%s %d start %d stop %d\n", in wm8350_ldo_set_slot()
701 return -EINVAL; in wm8350_ldo_set_slot()
703 switch (ldo) { in wm8350_ldo_set_slot()
717 return -EINVAL; in wm8350_ldo_set_slot()
726 int wm8350_dcdc25_set_mode(struct wm8350 *wm8350, int dcdc, u16 mode, in wm8350_dcdc25_set_mode() argument
731 dev_dbg(wm8350->dev, "%s %d mode: %s %s\n", __func__, dcdc, in wm8350_dcdc25_set_mode()
732 mode ? "normal" : "boost", ilim ? "low" : "normal"); in wm8350_dcdc25_set_mode()
734 switch (dcdc) { in wm8350_dcdc25_set_mode()
740 (mode << WM8350_DC2_MODE_SHIFT) | in wm8350_dcdc25_set_mode()
750 (mode << WM8350_DC5_MODE_SHIFT) | in wm8350_dcdc25_set_mode()
756 return -EINVAL; in wm8350_dcdc25_set_mode()
767 switch (dcdc) { in force_continuous_enable()
781 return -EINVAL; in force_continuous_enable()
793 static int wm8350_dcdc_set_mode(struct regulator_dev *rdev, unsigned int mode) in wm8350_dcdc_set_mode() argument
800 return -EINVAL; in wm8350_dcdc_set_mode()
803 return -EINVAL; in wm8350_dcdc_set_mode()
805 val = 1 << (dcdc - WM8350_DCDC_1); in wm8350_dcdc_set_mode()
807 switch (mode) { in wm8350_dcdc_set_mode()
809 /* force continuous mode */ in wm8350_dcdc_set_mode()
821 /* standby mode */ in wm8350_dcdc_set_mode()
827 /* LDO mode */ in wm8350_dcdc_set_mode()
841 int mode = REGULATOR_MODE_NORMAL; in wm8350_dcdc_get_mode() local
844 switch (dcdc) { in wm8350_dcdc_get_mode()
858 return -EINVAL; in wm8350_dcdc_get_mode()
861 mask = 1 << (dcdc - WM8350_DCDC_1); in wm8350_dcdc_get_mode()
866 dev_dbg(wm8350->dev, "mask %x active %x sleep %x force %x", in wm8350_dcdc_get_mode()
871 mode = REGULATOR_MODE_FAST; in wm8350_dcdc_get_mode()
873 mode = REGULATOR_MODE_NORMAL; in wm8350_dcdc_get_mode()
875 mode = REGULATOR_MODE_IDLE; in wm8350_dcdc_get_mode()
877 mode = REGULATOR_MODE_STANDBY; in wm8350_dcdc_get_mode()
879 return mode; in wm8350_dcdc_get_mode()
890 unsigned int mode; member
894 {0, 10000, REGULATOR_MODE_STANDBY}, /* 0 - 10mA - LDO */
895 {10000, 100000, REGULATOR_MODE_IDLE}, /* 10mA - 100mA - Standby */
896 {100000, 1000000, REGULATOR_MODE_NORMAL}, /* > 100mA - Active */
897 {-1, -1, REGULATOR_MODE_NORMAL},
901 {0, 10000, REGULATOR_MODE_STANDBY}, /* 0 - 10mA - LDO */
902 {10000, 100000, REGULATOR_MODE_IDLE}, /* 10mA - 100mA - Standby */
903 {100000, 800000, REGULATOR_MODE_NORMAL}, /* > 100mA - Active */
904 {-1, -1, REGULATOR_MODE_NORMAL},
911 while (eff[i].uA_load_min != -1) { in get_mode()
913 return eff[i].mode; in get_mode()
919 /* Query the regulator for it's most efficient mode @ uV,uA
927 int dcdc = rdev_get_id(rdev), mode; in wm8350_dcdc_get_optimum_mode() local
929 switch (dcdc) { in wm8350_dcdc_get_optimum_mode()
932 mode = get_mode(output_uA, dcdc1_6_efficiency); in wm8350_dcdc_get_optimum_mode()
936 mode = get_mode(output_uA, dcdc3_4_efficiency); in wm8350_dcdc_get_optimum_mode()
939 mode = REGULATOR_MODE_NORMAL; in wm8350_dcdc_get_optimum_mode()
942 return mode; in wm8350_dcdc_get_optimum_mode()
1156 mutex_lock(&rdev->mutex); in pmic_uv_handler()
1165 mutex_unlock(&rdev->mutex); in pmic_uv_handler()
1172 struct wm8350 *wm8350 = dev_get_drvdata(&pdev->dev); in wm8350_regulator_probe()
1178 if (pdev->id < WM8350_DCDC_1 || pdev->id > WM8350_ISINK_B) in wm8350_regulator_probe()
1179 return -ENODEV; in wm8350_regulator_probe()
1182 switch (pdev->id) { in wm8350_regulator_probe()
1185 wm8350->pmic.dcdc1_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_regulator_probe()
1189 wm8350->pmic.dcdc3_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_regulator_probe()
1193 wm8350->pmic.dcdc4_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_regulator_probe()
1197 wm8350->pmic.dcdc6_hib_mode = val & WM8350_DCDC_HIB_MODE_MASK; in wm8350_regulator_probe()
1201 config.dev = &pdev->dev; in wm8350_regulator_probe()
1202 config.init_data = dev_get_platdata(&pdev->dev); in wm8350_regulator_probe()
1203 config.driver_data = dev_get_drvdata(&pdev->dev); in wm8350_regulator_probe()
1204 config.regmap = wm8350->regmap; in wm8350_regulator_probe()
1207 rdev = devm_regulator_register(&pdev->dev, &wm8350_reg[pdev->id], in wm8350_regulator_probe()
1210 dev_err(&pdev->dev, "failed to register %s\n", in wm8350_regulator_probe()
1211 wm8350_reg[pdev->id].name); in wm8350_regulator_probe()
1216 ret = wm8350_register_irq(wm8350, wm8350_reg[pdev->id].irq, in wm8350_regulator_probe()
1219 dev_err(&pdev->dev, "failed to register regulator %s IRQ\n", in wm8350_regulator_probe()
1220 wm8350_reg[pdev->id].name); in wm8350_regulator_probe()
1232 wm8350_free_irq(wm8350, wm8350_reg[pdev->id].irq, rdev); in wm8350_regulator_remove()
1243 return -EINVAL; in wm8350_register_regulator()
1245 if (wm8350->pmic.pdev[reg]) in wm8350_register_regulator()
1246 return -EBUSY; in wm8350_register_regulator()
1249 reg > wm8350->pmic.max_dcdc) in wm8350_register_regulator()
1250 return -ENODEV; in wm8350_register_regulator()
1252 reg > wm8350->pmic.max_isink) in wm8350_register_regulator()
1253 return -ENODEV; in wm8350_register_regulator()
1255 pdev = platform_device_alloc("wm8350-regulator", reg); in wm8350_register_regulator()
1257 return -ENOMEM; in wm8350_register_regulator()
1259 wm8350->pmic.pdev[reg] = pdev; in wm8350_register_regulator()
1261 initdata->driver_data = wm8350; in wm8350_register_regulator()
1263 pdev->dev.platform_data = initdata; in wm8350_register_regulator()
1264 pdev->dev.parent = wm8350->dev; in wm8350_register_regulator()
1270 dev_err(wm8350->dev, "Failed to register regulator %d: %d\n", in wm8350_register_regulator()
1273 wm8350->pmic.pdev[reg] = NULL; in wm8350_register_regulator()
1281 * wm8350_register_led - Register a WM8350 LED output
1290 * provide a power-efficient LED driver. This function registers the
1303 if (lednum >= ARRAY_SIZE(wm8350->pmic.led) || lednum < 0) { in wm8350_register_led()
1304 dev_err(wm8350->dev, "Invalid LED index %d\n", lednum); in wm8350_register_led()
1305 return -ENODEV; in wm8350_register_led()
1308 led = &wm8350->pmic.led[lednum]; in wm8350_register_led()
1310 if (led->pdev) { in wm8350_register_led()
1311 dev_err(wm8350->dev, "LED %d already allocated\n", lednum); in wm8350_register_led()
1312 return -EINVAL; in wm8350_register_led()
1315 pdev = platform_device_alloc("wm8350-led", lednum); in wm8350_register_led()
1317 dev_err(wm8350->dev, "Failed to allocate LED %d\n", lednum); in wm8350_register_led()
1318 return -ENOMEM; in wm8350_register_led()
1321 led->isink_consumer.dev_name = dev_name(&pdev->dev); in wm8350_register_led()
1322 led->isink_consumer.supply = "led_isink"; in wm8350_register_led()
1323 led->isink_init.num_consumer_supplies = 1; in wm8350_register_led()
1324 led->isink_init.consumer_supplies = &led->isink_consumer; in wm8350_register_led()
1325 led->isink_init.constraints.min_uA = 0; in wm8350_register_led()
1326 led->isink_init.constraints.max_uA = pdata->max_uA; in wm8350_register_led()
1327 led->isink_init.constraints.valid_ops_mask in wm8350_register_led()
1329 led->isink_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL; in wm8350_register_led()
1330 ret = wm8350_register_regulator(wm8350, isink, &led->isink_init); in wm8350_register_led()
1336 led->dcdc_consumer.dev_name = dev_name(&pdev->dev); in wm8350_register_led()
1337 led->dcdc_consumer.supply = "led_vcc"; in wm8350_register_led()
1338 led->dcdc_init.num_consumer_supplies = 1; in wm8350_register_led()
1339 led->dcdc_init.consumer_supplies = &led->dcdc_consumer; in wm8350_register_led()
1340 led->dcdc_init.constraints.valid_modes_mask = REGULATOR_MODE_NORMAL; in wm8350_register_led()
1341 led->dcdc_init.constraints.valid_ops_mask = REGULATOR_CHANGE_STATUS; in wm8350_register_led()
1342 ret = wm8350_register_regulator(wm8350, dcdc, &led->dcdc_init); in wm8350_register_led()
1348 switch (isink) { in wm8350_register_led()
1350 wm8350->pmic.isink_A_dcdc = dcdc; in wm8350_register_led()
1353 wm8350->pmic.isink_B_dcdc = dcdc; in wm8350_register_led()
1357 pdev->dev.platform_data = pdata; in wm8350_register_led()
1358 pdev->dev.parent = wm8350->dev; in wm8350_register_led()
1361 dev_err(wm8350->dev, "Failed to register LED %d: %d\n", in wm8350_register_led()
1367 led->pdev = pdev; in wm8350_register_led()
1377 .name = "wm8350-regulator",
1397 MODULE_ALIAS("platform:wm8350-regulator");