mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
iio: light: ltr390: Add debugfs register access support
Add support for debugfs_reg_access through the driver's iio_info structure to enable low-level register read/write access for debugging. Signed-off-by: Akshay Jindal <akshayaj.lkd@gmail.com> Link: https://patch.msgid.link/20250728161445.13261-1-akshayaj.lkd@gmail.com Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
33c52b2d85
commit
9da51431c3
|
|
@ -38,12 +38,21 @@
|
|||
#define LTR390_ALS_UVS_GAIN 0x05
|
||||
#define LTR390_PART_ID 0x06
|
||||
#define LTR390_MAIN_STATUS 0x07
|
||||
|
||||
#define LTR390_ALS_DATA 0x0D
|
||||
#define LTR390_ALS_DATA_BYTE(n) (LTR390_ALS_DATA + (n))
|
||||
|
||||
#define LTR390_UVS_DATA 0x10
|
||||
#define LTR390_UVS_DATA_BYTE(n) (LTR390_UVS_DATA + (n))
|
||||
|
||||
#define LTR390_INT_CFG 0x19
|
||||
#define LTR390_INT_PST 0x1A
|
||||
|
||||
#define LTR390_THRESH_UP 0x21
|
||||
#define LTR390_THRESH_UP_BYTE(n) (LTR390_THRESH_UP + (n))
|
||||
|
||||
#define LTR390_THRESH_LOW 0x24
|
||||
#define LTR390_THRESH_LOW_BYTE(n) (LTR390_THRESH_LOW + (n))
|
||||
|
||||
#define LTR390_PART_NUMBER_ID 0xb
|
||||
#define LTR390_ALS_UVS_GAIN_MASK GENMASK(2, 0)
|
||||
|
|
@ -98,11 +107,39 @@ struct ltr390_data {
|
|||
int int_time_us;
|
||||
};
|
||||
|
||||
static const struct regmap_range ltr390_readable_reg_ranges[] = {
|
||||
regmap_reg_range(LTR390_MAIN_CTRL, LTR390_MAIN_CTRL),
|
||||
regmap_reg_range(LTR390_ALS_UVS_MEAS_RATE, LTR390_MAIN_STATUS),
|
||||
regmap_reg_range(LTR390_ALS_DATA_BYTE(0), LTR390_UVS_DATA_BYTE(2)),
|
||||
regmap_reg_range(LTR390_INT_CFG, LTR390_INT_PST),
|
||||
regmap_reg_range(LTR390_THRESH_UP_BYTE(0), LTR390_THRESH_LOW_BYTE(2)),
|
||||
};
|
||||
|
||||
static const struct regmap_access_table ltr390_readable_reg_table = {
|
||||
.yes_ranges = ltr390_readable_reg_ranges,
|
||||
.n_yes_ranges = ARRAY_SIZE(ltr390_readable_reg_ranges),
|
||||
};
|
||||
|
||||
static const struct regmap_range ltr390_writeable_reg_ranges[] = {
|
||||
regmap_reg_range(LTR390_MAIN_CTRL, LTR390_MAIN_CTRL),
|
||||
regmap_reg_range(LTR390_ALS_UVS_MEAS_RATE, LTR390_ALS_UVS_GAIN),
|
||||
regmap_reg_range(LTR390_INT_CFG, LTR390_INT_PST),
|
||||
regmap_reg_range(LTR390_THRESH_UP_BYTE(0), LTR390_THRESH_LOW_BYTE(2)),
|
||||
};
|
||||
|
||||
static const struct regmap_access_table ltr390_writeable_reg_table = {
|
||||
.yes_ranges = ltr390_writeable_reg_ranges,
|
||||
.n_yes_ranges = ARRAY_SIZE(ltr390_writeable_reg_ranges),
|
||||
};
|
||||
|
||||
static const struct regmap_config ltr390_regmap_config = {
|
||||
.name = "ltr390",
|
||||
.reg_bits = 8,
|
||||
.reg_stride = 1,
|
||||
.val_bits = 8,
|
||||
.max_register = LTR390_THRESH_LOW_BYTE(2),
|
||||
.rd_table = <r390_readable_reg_table,
|
||||
.wr_table = <r390_writeable_reg_table,
|
||||
};
|
||||
|
||||
/* Sampling frequency is in mili Hz and mili Seconds */
|
||||
|
|
@ -586,6 +623,20 @@ static int ltr390_write_event_config(struct iio_dev *indio_dev,
|
|||
}
|
||||
}
|
||||
|
||||
static int ltr390_debugfs_reg_access(struct iio_dev *indio_dev,
|
||||
unsigned int reg, unsigned int writeval,
|
||||
unsigned int *readval)
|
||||
{
|
||||
struct ltr390_data *data = iio_priv(indio_dev);
|
||||
|
||||
guard(mutex)(&data->lock);
|
||||
|
||||
if (readval)
|
||||
return regmap_read(data->regmap, reg, readval);
|
||||
|
||||
return regmap_write(data->regmap, reg, writeval);
|
||||
}
|
||||
|
||||
static const struct iio_info ltr390_info = {
|
||||
.read_raw = ltr390_read_raw,
|
||||
.write_raw = ltr390_write_raw,
|
||||
|
|
@ -594,6 +645,7 @@ static const struct iio_info ltr390_info = {
|
|||
.read_event_config = ltr390_read_event_config,
|
||||
.write_event_value = ltr390_write_event_value,
|
||||
.write_event_config = ltr390_write_event_config,
|
||||
.debugfs_reg_access = ltr390_debugfs_reg_access,
|
||||
};
|
||||
|
||||
static irqreturn_t ltr390_interrupt_handler(int irq, void *private)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user