Loading drivers/mfd/wm831x-core.c +351 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,352 @@ int wm831x_reg_unlock(struct wm831x *wm831x) } EXPORT_SYMBOL_GPL(wm831x_reg_unlock); static bool wm831x_reg_readable(struct device *dev, unsigned int reg) { switch (reg) { case WM831X_RESET_ID: case WM831X_REVISION: case WM831X_PARENT_ID: case WM831X_SYSVDD_CONTROL: case WM831X_THERMAL_MONITORING: case WM831X_POWER_STATE: case WM831X_WATCHDOG: case WM831X_ON_PIN_CONTROL: case WM831X_RESET_CONTROL: case WM831X_CONTROL_INTERFACE: case WM831X_SECURITY_KEY: case WM831X_SOFTWARE_SCRATCH: case WM831X_OTP_CONTROL: case WM831X_GPIO_LEVEL: case WM831X_SYSTEM_STATUS: case WM831X_ON_SOURCE: case WM831X_OFF_SOURCE: case WM831X_SYSTEM_INTERRUPTS: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_IRQ_CONFIG: case WM831X_SYSTEM_INTERRUPTS_MASK: case WM831X_INTERRUPT_STATUS_1_MASK: case WM831X_INTERRUPT_STATUS_2_MASK: case WM831X_INTERRUPT_STATUS_3_MASK: case WM831X_INTERRUPT_STATUS_4_MASK: case WM831X_INTERRUPT_STATUS_5_MASK: case WM831X_RTC_WRITE_COUNTER: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_RTC_ALARM_1: case WM831X_RTC_ALARM_2: case WM831X_RTC_CONTROL: case WM831X_RTC_TRIM: case WM831X_TOUCH_CONTROL_1: case WM831X_TOUCH_CONTROL_2: case WM831X_TOUCH_DATA_X: case WM831X_TOUCH_DATA_Y: case WM831X_TOUCH_DATA_Z: case WM831X_AUXADC_DATA: case WM831X_AUXADC_CONTROL: case WM831X_AUXADC_SOURCE: case WM831X_COMPARATOR_CONTROL: case WM831X_COMPARATOR_1: case WM831X_COMPARATOR_2: case WM831X_COMPARATOR_3: case WM831X_COMPARATOR_4: case WM831X_GPIO1_CONTROL: case WM831X_GPIO2_CONTROL: case WM831X_GPIO3_CONTROL: case WM831X_GPIO4_CONTROL: case WM831X_GPIO5_CONTROL: case WM831X_GPIO6_CONTROL: case WM831X_GPIO7_CONTROL: case WM831X_GPIO8_CONTROL: case WM831X_GPIO9_CONTROL: case WM831X_GPIO10_CONTROL: case WM831X_GPIO11_CONTROL: case WM831X_GPIO12_CONTROL: case WM831X_GPIO13_CONTROL: case WM831X_GPIO14_CONTROL: case WM831X_GPIO15_CONTROL: case WM831X_GPIO16_CONTROL: case WM831X_CHARGER_CONTROL_1: case WM831X_CHARGER_CONTROL_2: case WM831X_CHARGER_STATUS: case WM831X_BACKUP_CHARGER_CONTROL: case WM831X_STATUS_LED_1: case WM831X_STATUS_LED_2: case WM831X_CURRENT_SINK_1: case WM831X_CURRENT_SINK_2: case WM831X_DCDC_ENABLE: case WM831X_LDO_ENABLE: case WM831X_DCDC_STATUS: case WM831X_LDO_STATUS: case WM831X_DCDC_UV_STATUS: case WM831X_LDO_UV_STATUS: case WM831X_DC1_CONTROL_1: case WM831X_DC1_CONTROL_2: case WM831X_DC1_ON_CONFIG: case WM831X_DC1_SLEEP_CONTROL: case WM831X_DC1_DVS_CONTROL: case WM831X_DC2_CONTROL_1: case WM831X_DC2_CONTROL_2: case WM831X_DC2_ON_CONFIG: case WM831X_DC2_SLEEP_CONTROL: case WM831X_DC2_DVS_CONTROL: case WM831X_DC3_CONTROL_1: case WM831X_DC3_CONTROL_2: case WM831X_DC3_ON_CONFIG: case WM831X_DC3_SLEEP_CONTROL: case WM831X_DC4_CONTROL: case WM831X_DC4_SLEEP_CONTROL: case WM831X_EPE1_CONTROL: case WM831X_EPE2_CONTROL: case WM831X_LDO1_CONTROL: case WM831X_LDO1_ON_CONTROL: case WM831X_LDO1_SLEEP_CONTROL: case WM831X_LDO2_CONTROL: case WM831X_LDO2_ON_CONTROL: case WM831X_LDO2_SLEEP_CONTROL: case WM831X_LDO3_CONTROL: case WM831X_LDO3_ON_CONTROL: case WM831X_LDO3_SLEEP_CONTROL: case WM831X_LDO4_CONTROL: case WM831X_LDO4_ON_CONTROL: case WM831X_LDO4_SLEEP_CONTROL: case WM831X_LDO5_CONTROL: case WM831X_LDO5_ON_CONTROL: case WM831X_LDO5_SLEEP_CONTROL: case WM831X_LDO6_CONTROL: case WM831X_LDO6_ON_CONTROL: case WM831X_LDO6_SLEEP_CONTROL: case WM831X_LDO7_CONTROL: case WM831X_LDO7_ON_CONTROL: case WM831X_LDO7_SLEEP_CONTROL: case WM831X_LDO8_CONTROL: case WM831X_LDO8_ON_CONTROL: case WM831X_LDO8_SLEEP_CONTROL: case WM831X_LDO9_CONTROL: case WM831X_LDO9_ON_CONTROL: case WM831X_LDO9_SLEEP_CONTROL: case WM831X_LDO10_CONTROL: case WM831X_LDO10_ON_CONTROL: case WM831X_LDO10_SLEEP_CONTROL: case WM831X_LDO11_ON_CONTROL: case WM831X_LDO11_SLEEP_CONTROL: case WM831X_POWER_GOOD_SOURCE_1: case WM831X_POWER_GOOD_SOURCE_2: case WM831X_CLOCK_CONTROL_1: case WM831X_CLOCK_CONTROL_2: case WM831X_FLL_CONTROL_1: case WM831X_FLL_CONTROL_2: case WM831X_FLL_CONTROL_3: case WM831X_FLL_CONTROL_4: case WM831X_FLL_CONTROL_5: case WM831X_UNIQUE_ID_1: case WM831X_UNIQUE_ID_2: case WM831X_UNIQUE_ID_3: case WM831X_UNIQUE_ID_4: case WM831X_UNIQUE_ID_5: case WM831X_UNIQUE_ID_6: case WM831X_UNIQUE_ID_7: case WM831X_UNIQUE_ID_8: case WM831X_FACTORY_OTP_ID: case WM831X_FACTORY_OTP_1: case WM831X_FACTORY_OTP_2: case WM831X_FACTORY_OTP_3: case WM831X_FACTORY_OTP_4: case WM831X_FACTORY_OTP_5: case WM831X_CUSTOMER_OTP_ID: case WM831X_DC1_OTP_CONTROL: case WM831X_DC2_OTP_CONTROL: case WM831X_DC3_OTP_CONTROL: case WM831X_LDO1_2_OTP_CONTROL: case WM831X_LDO3_4_OTP_CONTROL: case WM831X_LDO5_6_OTP_CONTROL: case WM831X_LDO7_8_OTP_CONTROL: case WM831X_LDO9_10_OTP_CONTROL: case WM831X_LDO11_EPE_CONTROL: case WM831X_GPIO1_OTP_CONTROL: case WM831X_GPIO2_OTP_CONTROL: case WM831X_GPIO3_OTP_CONTROL: case WM831X_GPIO4_OTP_CONTROL: case WM831X_GPIO5_OTP_CONTROL: case WM831X_GPIO6_OTP_CONTROL: case WM831X_DBE_CHECK_DATA: return true; default: return false; } } static bool wm831x_reg_writeable(struct device *dev, unsigned int reg) { struct wm831x *wm831x = dev_get_drvdata(dev); if (wm831x_reg_locked(wm831x, reg)) return false; switch (reg) { case WM831X_SYSVDD_CONTROL: case WM831X_THERMAL_MONITORING: case WM831X_POWER_STATE: case WM831X_WATCHDOG: case WM831X_ON_PIN_CONTROL: case WM831X_RESET_CONTROL: case WM831X_CONTROL_INTERFACE: case WM831X_SECURITY_KEY: case WM831X_SOFTWARE_SCRATCH: case WM831X_OTP_CONTROL: case WM831X_GPIO_LEVEL: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_IRQ_CONFIG: case WM831X_SYSTEM_INTERRUPTS_MASK: case WM831X_INTERRUPT_STATUS_1_MASK: case WM831X_INTERRUPT_STATUS_2_MASK: case WM831X_INTERRUPT_STATUS_3_MASK: case WM831X_INTERRUPT_STATUS_4_MASK: case WM831X_INTERRUPT_STATUS_5_MASK: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_RTC_ALARM_1: case WM831X_RTC_ALARM_2: case WM831X_RTC_CONTROL: case WM831X_RTC_TRIM: case WM831X_TOUCH_CONTROL_1: case WM831X_TOUCH_CONTROL_2: case WM831X_AUXADC_CONTROL: case WM831X_AUXADC_SOURCE: case WM831X_COMPARATOR_CONTROL: case WM831X_COMPARATOR_1: case WM831X_COMPARATOR_2: case WM831X_COMPARATOR_3: case WM831X_COMPARATOR_4: case WM831X_GPIO1_CONTROL: case WM831X_GPIO2_CONTROL: case WM831X_GPIO3_CONTROL: case WM831X_GPIO4_CONTROL: case WM831X_GPIO5_CONTROL: case WM831X_GPIO6_CONTROL: case WM831X_GPIO7_CONTROL: case WM831X_GPIO8_CONTROL: case WM831X_GPIO9_CONTROL: case WM831X_GPIO10_CONTROL: case WM831X_GPIO11_CONTROL: case WM831X_GPIO12_CONTROL: case WM831X_GPIO13_CONTROL: case WM831X_GPIO14_CONTROL: case WM831X_GPIO15_CONTROL: case WM831X_GPIO16_CONTROL: case WM831X_CHARGER_CONTROL_1: case WM831X_CHARGER_CONTROL_2: case WM831X_CHARGER_STATUS: case WM831X_BACKUP_CHARGER_CONTROL: case WM831X_STATUS_LED_1: case WM831X_STATUS_LED_2: case WM831X_CURRENT_SINK_1: case WM831X_CURRENT_SINK_2: case WM831X_DCDC_ENABLE: case WM831X_LDO_ENABLE: case WM831X_DC1_CONTROL_1: case WM831X_DC1_CONTROL_2: case WM831X_DC1_ON_CONFIG: case WM831X_DC1_SLEEP_CONTROL: case WM831X_DC1_DVS_CONTROL: case WM831X_DC2_CONTROL_1: case WM831X_DC2_CONTROL_2: case WM831X_DC2_ON_CONFIG: case WM831X_DC2_SLEEP_CONTROL: case WM831X_DC2_DVS_CONTROL: case WM831X_DC3_CONTROL_1: case WM831X_DC3_CONTROL_2: case WM831X_DC3_ON_CONFIG: case WM831X_DC3_SLEEP_CONTROL: case WM831X_DC4_CONTROL: case WM831X_DC4_SLEEP_CONTROL: case WM831X_EPE1_CONTROL: case WM831X_EPE2_CONTROL: case WM831X_LDO1_CONTROL: case WM831X_LDO1_ON_CONTROL: case WM831X_LDO1_SLEEP_CONTROL: case WM831X_LDO2_CONTROL: case WM831X_LDO2_ON_CONTROL: case WM831X_LDO2_SLEEP_CONTROL: case WM831X_LDO3_CONTROL: case WM831X_LDO3_ON_CONTROL: case WM831X_LDO3_SLEEP_CONTROL: case WM831X_LDO4_CONTROL: case WM831X_LDO4_ON_CONTROL: case WM831X_LDO4_SLEEP_CONTROL: case WM831X_LDO5_CONTROL: case WM831X_LDO5_ON_CONTROL: case WM831X_LDO5_SLEEP_CONTROL: case WM831X_LDO6_CONTROL: case WM831X_LDO6_ON_CONTROL: case WM831X_LDO6_SLEEP_CONTROL: case WM831X_LDO7_CONTROL: case WM831X_LDO7_ON_CONTROL: case WM831X_LDO7_SLEEP_CONTROL: case WM831X_LDO8_CONTROL: case WM831X_LDO8_ON_CONTROL: case WM831X_LDO8_SLEEP_CONTROL: case WM831X_LDO9_CONTROL: case WM831X_LDO9_ON_CONTROL: case WM831X_LDO9_SLEEP_CONTROL: case WM831X_LDO10_CONTROL: case WM831X_LDO10_ON_CONTROL: case WM831X_LDO10_SLEEP_CONTROL: case WM831X_LDO11_ON_CONTROL: case WM831X_LDO11_SLEEP_CONTROL: case WM831X_POWER_GOOD_SOURCE_1: case WM831X_POWER_GOOD_SOURCE_2: case WM831X_CLOCK_CONTROL_1: case WM831X_CLOCK_CONTROL_2: case WM831X_FLL_CONTROL_1: case WM831X_FLL_CONTROL_2: case WM831X_FLL_CONTROL_3: case WM831X_FLL_CONTROL_4: case WM831X_FLL_CONTROL_5: return true; default: return false; } } static bool wm831x_reg_volatile(struct device *dev, unsigned int reg) { switch (reg) { case WM831X_SYSTEM_STATUS: case WM831X_ON_SOURCE: case WM831X_OFF_SOURCE: case WM831X_GPIO_LEVEL: case WM831X_SYSTEM_INTERRUPTS: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_TOUCH_DATA_X: case WM831X_TOUCH_DATA_Y: case WM831X_TOUCH_DATA_Z: case WM831X_AUXADC_DATA: case WM831X_CHARGER_STATUS: case WM831X_DCDC_STATUS: case WM831X_LDO_STATUS: case WM831X_DCDC_UV_STATUS: case WM831X_LDO_UV_STATUS: return true; default: return false; } } /** * wm831x_reg_read: Read a single WM831x register. * Loading Loading @@ -1254,6 +1600,11 @@ static struct mfd_cell backlight_devs[] = { struct regmap_config wm831x_regmap_config = { .reg_bits = 16, .val_bits = 16, .max_register = WM831X_DBE_CHECK_DATA, .readable_reg = wm831x_reg_readable, .writeable_reg = wm831x_reg_writeable, .volatile_reg = wm831x_reg_volatile, }; EXPORT_SYMBOL_GPL(wm831x_regmap_config); Loading Loading
drivers/mfd/wm831x-core.c +351 −0 Original line number Diff line number Diff line Loading @@ -161,6 +161,352 @@ int wm831x_reg_unlock(struct wm831x *wm831x) } EXPORT_SYMBOL_GPL(wm831x_reg_unlock); static bool wm831x_reg_readable(struct device *dev, unsigned int reg) { switch (reg) { case WM831X_RESET_ID: case WM831X_REVISION: case WM831X_PARENT_ID: case WM831X_SYSVDD_CONTROL: case WM831X_THERMAL_MONITORING: case WM831X_POWER_STATE: case WM831X_WATCHDOG: case WM831X_ON_PIN_CONTROL: case WM831X_RESET_CONTROL: case WM831X_CONTROL_INTERFACE: case WM831X_SECURITY_KEY: case WM831X_SOFTWARE_SCRATCH: case WM831X_OTP_CONTROL: case WM831X_GPIO_LEVEL: case WM831X_SYSTEM_STATUS: case WM831X_ON_SOURCE: case WM831X_OFF_SOURCE: case WM831X_SYSTEM_INTERRUPTS: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_IRQ_CONFIG: case WM831X_SYSTEM_INTERRUPTS_MASK: case WM831X_INTERRUPT_STATUS_1_MASK: case WM831X_INTERRUPT_STATUS_2_MASK: case WM831X_INTERRUPT_STATUS_3_MASK: case WM831X_INTERRUPT_STATUS_4_MASK: case WM831X_INTERRUPT_STATUS_5_MASK: case WM831X_RTC_WRITE_COUNTER: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_RTC_ALARM_1: case WM831X_RTC_ALARM_2: case WM831X_RTC_CONTROL: case WM831X_RTC_TRIM: case WM831X_TOUCH_CONTROL_1: case WM831X_TOUCH_CONTROL_2: case WM831X_TOUCH_DATA_X: case WM831X_TOUCH_DATA_Y: case WM831X_TOUCH_DATA_Z: case WM831X_AUXADC_DATA: case WM831X_AUXADC_CONTROL: case WM831X_AUXADC_SOURCE: case WM831X_COMPARATOR_CONTROL: case WM831X_COMPARATOR_1: case WM831X_COMPARATOR_2: case WM831X_COMPARATOR_3: case WM831X_COMPARATOR_4: case WM831X_GPIO1_CONTROL: case WM831X_GPIO2_CONTROL: case WM831X_GPIO3_CONTROL: case WM831X_GPIO4_CONTROL: case WM831X_GPIO5_CONTROL: case WM831X_GPIO6_CONTROL: case WM831X_GPIO7_CONTROL: case WM831X_GPIO8_CONTROL: case WM831X_GPIO9_CONTROL: case WM831X_GPIO10_CONTROL: case WM831X_GPIO11_CONTROL: case WM831X_GPIO12_CONTROL: case WM831X_GPIO13_CONTROL: case WM831X_GPIO14_CONTROL: case WM831X_GPIO15_CONTROL: case WM831X_GPIO16_CONTROL: case WM831X_CHARGER_CONTROL_1: case WM831X_CHARGER_CONTROL_2: case WM831X_CHARGER_STATUS: case WM831X_BACKUP_CHARGER_CONTROL: case WM831X_STATUS_LED_1: case WM831X_STATUS_LED_2: case WM831X_CURRENT_SINK_1: case WM831X_CURRENT_SINK_2: case WM831X_DCDC_ENABLE: case WM831X_LDO_ENABLE: case WM831X_DCDC_STATUS: case WM831X_LDO_STATUS: case WM831X_DCDC_UV_STATUS: case WM831X_LDO_UV_STATUS: case WM831X_DC1_CONTROL_1: case WM831X_DC1_CONTROL_2: case WM831X_DC1_ON_CONFIG: case WM831X_DC1_SLEEP_CONTROL: case WM831X_DC1_DVS_CONTROL: case WM831X_DC2_CONTROL_1: case WM831X_DC2_CONTROL_2: case WM831X_DC2_ON_CONFIG: case WM831X_DC2_SLEEP_CONTROL: case WM831X_DC2_DVS_CONTROL: case WM831X_DC3_CONTROL_1: case WM831X_DC3_CONTROL_2: case WM831X_DC3_ON_CONFIG: case WM831X_DC3_SLEEP_CONTROL: case WM831X_DC4_CONTROL: case WM831X_DC4_SLEEP_CONTROL: case WM831X_EPE1_CONTROL: case WM831X_EPE2_CONTROL: case WM831X_LDO1_CONTROL: case WM831X_LDO1_ON_CONTROL: case WM831X_LDO1_SLEEP_CONTROL: case WM831X_LDO2_CONTROL: case WM831X_LDO2_ON_CONTROL: case WM831X_LDO2_SLEEP_CONTROL: case WM831X_LDO3_CONTROL: case WM831X_LDO3_ON_CONTROL: case WM831X_LDO3_SLEEP_CONTROL: case WM831X_LDO4_CONTROL: case WM831X_LDO4_ON_CONTROL: case WM831X_LDO4_SLEEP_CONTROL: case WM831X_LDO5_CONTROL: case WM831X_LDO5_ON_CONTROL: case WM831X_LDO5_SLEEP_CONTROL: case WM831X_LDO6_CONTROL: case WM831X_LDO6_ON_CONTROL: case WM831X_LDO6_SLEEP_CONTROL: case WM831X_LDO7_CONTROL: case WM831X_LDO7_ON_CONTROL: case WM831X_LDO7_SLEEP_CONTROL: case WM831X_LDO8_CONTROL: case WM831X_LDO8_ON_CONTROL: case WM831X_LDO8_SLEEP_CONTROL: case WM831X_LDO9_CONTROL: case WM831X_LDO9_ON_CONTROL: case WM831X_LDO9_SLEEP_CONTROL: case WM831X_LDO10_CONTROL: case WM831X_LDO10_ON_CONTROL: case WM831X_LDO10_SLEEP_CONTROL: case WM831X_LDO11_ON_CONTROL: case WM831X_LDO11_SLEEP_CONTROL: case WM831X_POWER_GOOD_SOURCE_1: case WM831X_POWER_GOOD_SOURCE_2: case WM831X_CLOCK_CONTROL_1: case WM831X_CLOCK_CONTROL_2: case WM831X_FLL_CONTROL_1: case WM831X_FLL_CONTROL_2: case WM831X_FLL_CONTROL_3: case WM831X_FLL_CONTROL_4: case WM831X_FLL_CONTROL_5: case WM831X_UNIQUE_ID_1: case WM831X_UNIQUE_ID_2: case WM831X_UNIQUE_ID_3: case WM831X_UNIQUE_ID_4: case WM831X_UNIQUE_ID_5: case WM831X_UNIQUE_ID_6: case WM831X_UNIQUE_ID_7: case WM831X_UNIQUE_ID_8: case WM831X_FACTORY_OTP_ID: case WM831X_FACTORY_OTP_1: case WM831X_FACTORY_OTP_2: case WM831X_FACTORY_OTP_3: case WM831X_FACTORY_OTP_4: case WM831X_FACTORY_OTP_5: case WM831X_CUSTOMER_OTP_ID: case WM831X_DC1_OTP_CONTROL: case WM831X_DC2_OTP_CONTROL: case WM831X_DC3_OTP_CONTROL: case WM831X_LDO1_2_OTP_CONTROL: case WM831X_LDO3_4_OTP_CONTROL: case WM831X_LDO5_6_OTP_CONTROL: case WM831X_LDO7_8_OTP_CONTROL: case WM831X_LDO9_10_OTP_CONTROL: case WM831X_LDO11_EPE_CONTROL: case WM831X_GPIO1_OTP_CONTROL: case WM831X_GPIO2_OTP_CONTROL: case WM831X_GPIO3_OTP_CONTROL: case WM831X_GPIO4_OTP_CONTROL: case WM831X_GPIO5_OTP_CONTROL: case WM831X_GPIO6_OTP_CONTROL: case WM831X_DBE_CHECK_DATA: return true; default: return false; } } static bool wm831x_reg_writeable(struct device *dev, unsigned int reg) { struct wm831x *wm831x = dev_get_drvdata(dev); if (wm831x_reg_locked(wm831x, reg)) return false; switch (reg) { case WM831X_SYSVDD_CONTROL: case WM831X_THERMAL_MONITORING: case WM831X_POWER_STATE: case WM831X_WATCHDOG: case WM831X_ON_PIN_CONTROL: case WM831X_RESET_CONTROL: case WM831X_CONTROL_INTERFACE: case WM831X_SECURITY_KEY: case WM831X_SOFTWARE_SCRATCH: case WM831X_OTP_CONTROL: case WM831X_GPIO_LEVEL: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_IRQ_CONFIG: case WM831X_SYSTEM_INTERRUPTS_MASK: case WM831X_INTERRUPT_STATUS_1_MASK: case WM831X_INTERRUPT_STATUS_2_MASK: case WM831X_INTERRUPT_STATUS_3_MASK: case WM831X_INTERRUPT_STATUS_4_MASK: case WM831X_INTERRUPT_STATUS_5_MASK: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_RTC_ALARM_1: case WM831X_RTC_ALARM_2: case WM831X_RTC_CONTROL: case WM831X_RTC_TRIM: case WM831X_TOUCH_CONTROL_1: case WM831X_TOUCH_CONTROL_2: case WM831X_AUXADC_CONTROL: case WM831X_AUXADC_SOURCE: case WM831X_COMPARATOR_CONTROL: case WM831X_COMPARATOR_1: case WM831X_COMPARATOR_2: case WM831X_COMPARATOR_3: case WM831X_COMPARATOR_4: case WM831X_GPIO1_CONTROL: case WM831X_GPIO2_CONTROL: case WM831X_GPIO3_CONTROL: case WM831X_GPIO4_CONTROL: case WM831X_GPIO5_CONTROL: case WM831X_GPIO6_CONTROL: case WM831X_GPIO7_CONTROL: case WM831X_GPIO8_CONTROL: case WM831X_GPIO9_CONTROL: case WM831X_GPIO10_CONTROL: case WM831X_GPIO11_CONTROL: case WM831X_GPIO12_CONTROL: case WM831X_GPIO13_CONTROL: case WM831X_GPIO14_CONTROL: case WM831X_GPIO15_CONTROL: case WM831X_GPIO16_CONTROL: case WM831X_CHARGER_CONTROL_1: case WM831X_CHARGER_CONTROL_2: case WM831X_CHARGER_STATUS: case WM831X_BACKUP_CHARGER_CONTROL: case WM831X_STATUS_LED_1: case WM831X_STATUS_LED_2: case WM831X_CURRENT_SINK_1: case WM831X_CURRENT_SINK_2: case WM831X_DCDC_ENABLE: case WM831X_LDO_ENABLE: case WM831X_DC1_CONTROL_1: case WM831X_DC1_CONTROL_2: case WM831X_DC1_ON_CONFIG: case WM831X_DC1_SLEEP_CONTROL: case WM831X_DC1_DVS_CONTROL: case WM831X_DC2_CONTROL_1: case WM831X_DC2_CONTROL_2: case WM831X_DC2_ON_CONFIG: case WM831X_DC2_SLEEP_CONTROL: case WM831X_DC2_DVS_CONTROL: case WM831X_DC3_CONTROL_1: case WM831X_DC3_CONTROL_2: case WM831X_DC3_ON_CONFIG: case WM831X_DC3_SLEEP_CONTROL: case WM831X_DC4_CONTROL: case WM831X_DC4_SLEEP_CONTROL: case WM831X_EPE1_CONTROL: case WM831X_EPE2_CONTROL: case WM831X_LDO1_CONTROL: case WM831X_LDO1_ON_CONTROL: case WM831X_LDO1_SLEEP_CONTROL: case WM831X_LDO2_CONTROL: case WM831X_LDO2_ON_CONTROL: case WM831X_LDO2_SLEEP_CONTROL: case WM831X_LDO3_CONTROL: case WM831X_LDO3_ON_CONTROL: case WM831X_LDO3_SLEEP_CONTROL: case WM831X_LDO4_CONTROL: case WM831X_LDO4_ON_CONTROL: case WM831X_LDO4_SLEEP_CONTROL: case WM831X_LDO5_CONTROL: case WM831X_LDO5_ON_CONTROL: case WM831X_LDO5_SLEEP_CONTROL: case WM831X_LDO6_CONTROL: case WM831X_LDO6_ON_CONTROL: case WM831X_LDO6_SLEEP_CONTROL: case WM831X_LDO7_CONTROL: case WM831X_LDO7_ON_CONTROL: case WM831X_LDO7_SLEEP_CONTROL: case WM831X_LDO8_CONTROL: case WM831X_LDO8_ON_CONTROL: case WM831X_LDO8_SLEEP_CONTROL: case WM831X_LDO9_CONTROL: case WM831X_LDO9_ON_CONTROL: case WM831X_LDO9_SLEEP_CONTROL: case WM831X_LDO10_CONTROL: case WM831X_LDO10_ON_CONTROL: case WM831X_LDO10_SLEEP_CONTROL: case WM831X_LDO11_ON_CONTROL: case WM831X_LDO11_SLEEP_CONTROL: case WM831X_POWER_GOOD_SOURCE_1: case WM831X_POWER_GOOD_SOURCE_2: case WM831X_CLOCK_CONTROL_1: case WM831X_CLOCK_CONTROL_2: case WM831X_FLL_CONTROL_1: case WM831X_FLL_CONTROL_2: case WM831X_FLL_CONTROL_3: case WM831X_FLL_CONTROL_4: case WM831X_FLL_CONTROL_5: return true; default: return false; } } static bool wm831x_reg_volatile(struct device *dev, unsigned int reg) { switch (reg) { case WM831X_SYSTEM_STATUS: case WM831X_ON_SOURCE: case WM831X_OFF_SOURCE: case WM831X_GPIO_LEVEL: case WM831X_SYSTEM_INTERRUPTS: case WM831X_INTERRUPT_STATUS_1: case WM831X_INTERRUPT_STATUS_2: case WM831X_INTERRUPT_STATUS_3: case WM831X_INTERRUPT_STATUS_4: case WM831X_INTERRUPT_STATUS_5: case WM831X_RTC_TIME_1: case WM831X_RTC_TIME_2: case WM831X_TOUCH_DATA_X: case WM831X_TOUCH_DATA_Y: case WM831X_TOUCH_DATA_Z: case WM831X_AUXADC_DATA: case WM831X_CHARGER_STATUS: case WM831X_DCDC_STATUS: case WM831X_LDO_STATUS: case WM831X_DCDC_UV_STATUS: case WM831X_LDO_UV_STATUS: return true; default: return false; } } /** * wm831x_reg_read: Read a single WM831x register. * Loading Loading @@ -1254,6 +1600,11 @@ static struct mfd_cell backlight_devs[] = { struct regmap_config wm831x_regmap_config = { .reg_bits = 16, .val_bits = 16, .max_register = WM831X_DBE_CHECK_DATA, .readable_reg = wm831x_reg_readable, .writeable_reg = wm831x_reg_writeable, .volatile_reg = wm831x_reg_volatile, }; EXPORT_SYMBOL_GPL(wm831x_regmap_config); Loading