| // SPDX-License-Identifier: GPL-2.0 |
| /** |
| * Copyright 2021 Google LLC. |
| */ |
| |
| #include <linux/regmap.h> |
| #include <linux/ssr/ps13216_regs.h> |
| |
| #include "ps13216.h" |
| |
| static bool ps13216_volatile_register(struct device *dev, unsigned int reg) |
| { |
| switch (reg) { |
| case PS13216_REG_EVENT0: |
| case PS13216_REG_EVENT1: |
| case PS13216_REG_GLOBAL_EVENTS: |
| case PS13216_REG_SETUP: |
| case PS13216_REG_CTRL: |
| case PS13216_REG_FORCE_ACTIVE: |
| case PS13216_REG_EVENT0_MASK: |
| case PS13216_REG_EVENT1_MASK: |
| case PS13216_REG_ADC_CTRL: |
| case PS13216_REG_ADC_FIFO: |
| case PS13216_REG_ADC_FIFO_FILL_CNT_LSB: |
| case PS13216_REG_ADC_FIFO_FILL_CNT_MSB: |
| case PS13216_REG_TEST_SIGNAL_SPY: |
| return true; |
| default: |
| return false; |
| } |
| } |
| |
| static bool ps13216_readable_register(struct device *dev, unsigned int reg) |
| { |
| switch (reg) { |
| case PS13216_REG_EVENT0: |
| case PS13216_REG_EVENT1: |
| case PS13216_REG_GLOBAL_EVENTS: |
| case PS13216_REG_SETUP: |
| case PS13216_REG_CTRL: |
| case PS13216_REG_FORCE_ACTIVE: |
| case PS13216_REG_EVENT0_MASK: |
| case PS13216_REG_EVENT1_MASK: |
| case PS13216_REG_ADC_CTRL: |
| case PS13216_REG_ADC_FIFO: |
| case PS13216_REG_ADC_FIFO_FILL_CNT_LSB: |
| case PS13216_REG_ADC_FIFO_FILL_CNT_MSB: |
| case PS13216_REG_TEST_SIGNAL_SPY: |
| return true; |
| default: |
| return false; |
| } |
| } |
| |
| static bool ps13216_writeable_register(struct device *dev, unsigned int reg) |
| { |
| switch (reg) { |
| case PS13216_REG_EVENT0: |
| case PS13216_REG_EVENT1: |
| case PS13216_REG_GLOBAL_EVENTS: |
| case PS13216_REG_SETUP: |
| case PS13216_REG_BB1XB: |
| case PS13216_REG_BB0XB: |
| case PS13216_REG_FORCE_ACTIVE: |
| case PS13216_REG_EVENT0_MASK: |
| case PS13216_REG_EVENT1_MASK: |
| case PS13216_REG_ADC_CTRL: |
| case PS13216_REG_ADC_FIFO_FILL_CNT_MSB: |
| case PS13216_REG_TEST_SIGNAL_SPY: |
| case PS13216_REG_SW_TEST_MODE: |
| return true; |
| default: |
| return false; |
| } |
| } |
| |
| struct regmap_config ps13216_regmap_config = { |
| .reg_bits = 8, |
| .val_bits = 8, |
| |
| .max_register = PS13216_MAX_REGISTER, |
| .writeable_reg = ps13216_writeable_register, |
| .readable_reg = ps13216_readable_register, |
| .volatile_reg = ps13216_volatile_register, |
| }; |
| EXPORT_SYMBOL(ps13216_regmap_config); |