| /linux/drivers/media/i2c/ccs/ |
| H A D | ccs-core.c | 13 * Based on smia-sensor.c by Tuukka Toivonen <tuukkat76@gmail.com> 93 static int ccs_limit_ptr(struct ccs_sensor *sensor, unsigned int limit, in ccs_limit_ptr() argument 103 if (WARN_ON(!sensor->ccs_limits) || in ccs_limit_ptr() 108 *__ptr = sensor->ccs_limits + ccs_limit_offsets[limit].lim + offset; in ccs_limit_ptr() 113 void ccs_replace_limit(struct ccs_sensor *sensor, in ccs_replace_limit() argument 116 struct i2c_client *client = v4l2_get_subdevdata(&sensor->src->sd); in ccs_replace_limit() 121 ret = ccs_limit_ptr(sensor, limit, offset, &ptr); in ccs_replace_limit() 133 u32 ccs_get_limit(struct ccs_sensor *sensor, unsigned int limit, in ccs_get_limit() argument 140 ret = ccs_limit_ptr(sensor, limit, offset, &ptr); in ccs_get_limit() 159 return ccs_reg_conv(sensor, ccs_limits[limit].reg, val); in ccs_get_limit() [all …]
|
| /linux/drivers/media/i2c/ |
| H A D | ov2680.c | 3 * Omnivision OV2680 CMOS Image Sensor driver 7 * Based on OV5640 Sensor Driver 205 /* Sensor control register tweaks */ 272 static void ov2680_power_up(struct ov2680_dev *sensor) in ov2680_power_up() argument 274 if (!sensor->pwdn_gpio) in ov2680_power_up() 277 gpiod_set_value(sensor->pwdn_gpio, 0); in ov2680_power_up() 281 static void ov2680_power_down(struct ov2680_dev *sensor) in ov2680_power_down() argument 283 if (!sensor->pwdn_gpio) in ov2680_power_down() 286 gpiod_set_value(sensor->pwdn_gpio, 1); in ov2680_power_down() 290 static void ov2680_set_bayer_order(struct ov2680_dev *sensor, in ov2680_set_bayer_order() argument [all …]
|
| H A D | vgxy61.c | 3 * Driver for VGXY61 global shutter sensor family driver 480 static s32 get_pixel_rate(struct vgxy61_dev *sensor) in get_pixel_rate() argument 482 return div64_u64((u64)sensor->data_rate_in_mbps * sensor->nb_of_lane, in get_pixel_rate() 483 get_bpp_by_code(sensor->fmt.code)); in get_pixel_rate() 497 static unsigned int get_chunk_size(struct vgxy61_dev *sensor) in get_chunk_size() argument 499 struct i2c_adapter *adapter = sensor->i2c_client->adapter; in get_chunk_size() 510 static int vgxy61_write_array(struct vgxy61_dev *sensor, u32 reg, in vgxy61_write_array() argument 513 const unsigned int chunk_size = get_chunk_size(sensor); in vgxy61_write_array() 519 ret = regmap_bulk_write(sensor->regmap, CCI_REG_ADDR(reg), in vgxy61_write_array() 531 static int vgxy61_poll_reg(struct vgxy61_dev *sensor, u32 reg, u8 poll_val, in vgxy61_poll_reg() argument [all …]
|
| H A D | vd56g3.c | 99 /* The VD56G3 is a portrait image sensor with native resolution of 1124x1364. */ 192 * Sensor support 8bits and 10bits output in both variants 263 static int vd56g3_poll_reg(struct vd56g3 *sensor, u32 reg, u8 poll_val, in vd56g3_poll_reg() argument 276 ret = regmap_read_poll_timeout(sensor->regmap, CCI_REG_ADDR(reg), val, in vd56g3_poll_reg() 286 static int vd56g3_wait_state(struct vd56g3 *sensor, int state, int *err) in vd56g3_wait_state() argument 288 return vd56g3_poll_reg(sensor, VD56G3_REG_SYSTEM_FSM, state, err); in vd56g3_wait_state() 350 static int vd56g3_read_expo_cluster(struct vd56g3 *sensor, bool force_cur_val) in vd56g3_read_expo_cluster() argument 362 cci_read(sensor->regmap, VD56G3_REG_APPLIED_COARSE_EXPOSURE, &exposure, in vd56g3_read_expo_cluster() 364 cci_read(sensor->regmap, VD56G3_REG_APPLIED_ANALOG_GAIN, &again, &ret); in vd56g3_read_expo_cluster() 365 cci_read(sensor->regmap, VD56G3_REG_APPLIED_DIGITAL_GAIN, &dgain, &ret); in vd56g3_read_expo_cluster() [all …]
|
| H A D | imx296.c | 3 * Driver for IMX296 CMOS Image Sensor from Sony 217 static int imx296_read(struct imx296 *sensor, u32 addr) in imx296_read() argument 222 ret = regmap_raw_read(sensor->regmap, addr & IMX296_REG_ADDR_MASK, data, in imx296_read() 230 static int imx296_write(struct imx296 *sensor, u32 addr, u32 value, int *err) in imx296_write() argument 238 ret = regmap_raw_write(sensor->regmap, addr & IMX296_REG_ADDR_MASK, in imx296_write() 241 dev_err(sensor->dev, "%u-bit write to 0x%04x failed: %d\n", in imx296_write() 251 static int imx296_power_on(struct imx296 *sensor) in imx296_power_on() argument 255 ret = regulator_bulk_enable(ARRAY_SIZE(sensor->supplies), in imx296_power_on() 256 sensor->supplies); in imx296_power_on() 262 ret = gpiod_direction_output(sensor->reset, 0); in imx296_power_on() [all …]
|
| H A D | s5k6a3.c | 3 * Samsung S5K6A3 image sensor driver 45 * struct s5k6a3 - fimc-is sensor data structure 47 * @subdev: the image sensor's v4l2 subdev 49 * @supplies: image sensor's voltage regulator supplies 50 * @gpio_reset: GPIO connected to the sensor's reset pin 52 * @format: media bus format at the sensor's source pad 124 struct s5k6a3 *sensor, struct v4l2_subdev_state *sd_state, in __s5k6a3_get_format() argument 130 return &sensor->format; in __s5k6a3_get_format() 137 struct s5k6a3 *sensor = sd_to_s5k6a3(sd); in s5k6a3_set_fmt() local 142 mf = __s5k6a3_get_format(sensor, sd_state, fmt->pad, fmt->which); in s5k6a3_set_fmt() [all …]
|
| H A D | ov5648.c | 966 static int ov5648_read(struct ov5648_sensor *sensor, u16 address, u8 *value) in ov5648_read() argument 969 struct i2c_client *client = sensor->i2c_client; in ov5648_read() 989 static int ov5648_write(struct ov5648_sensor *sensor, u16 address, u8 value) in ov5648_write() argument 992 struct i2c_client *client = sensor->i2c_client; in ov5648_write() 1005 static int ov5648_write_sequence(struct ov5648_sensor *sensor, in ov5648_write_sequence() argument 1013 ret = ov5648_write(sensor, sequence[i].address, in ov5648_write_sequence() 1025 static int ov5648_update_bits(struct ov5648_sensor *sensor, u16 address, in ov5648_update_bits() argument 1031 ret = ov5648_read(sensor, address, &value); in ov5648_update_bits() 1038 ret = ov5648_write(sensor, address, value); in ov5648_update_bits() 1045 /* Sensor */ [all …]
|
| H A D | ov5640.c | 481 static inline bool ov5640_is_csi2(const struct ov5640_dev *sensor) in ov5640_is_csi2() argument 483 return sensor->ep.bus_type == V4L2_MBUS_CSI2_DPHY; in ov5640_is_csi2() 487 ov5640_formats(struct ov5640_dev *sensor) in ov5640_formats() argument 489 return ov5640_is_csi2(sensor) ? ov5640_csi2_formats in ov5640_formats() 494 ov5640_code_to_pixfmt(struct ov5640_dev *sensor, u32 code) in ov5640_code_to_pixfmt() argument 496 const struct ov5640_pixfmt *formats = ov5640_formats(sensor); in ov5640_code_to_pixfmt() 507 static u32 ov5640_code_to_bpp(struct ov5640_dev *sensor, u32 code) in ov5640_code_to_bpp() argument 509 const struct ov5640_pixfmt *format = ov5640_code_to_pixfmt(sensor, in ov5640_code_to_bpp() 1141 ov5640_timings(const struct ov5640_dev *sensor, in ov5640_timings() argument 1144 if (ov5640_is_csi2(sensor)) in ov5640_timings() [all …]
|
| H A D | ar0521.c | 159 static int ar0521_code_to_bpp(struct ar0521_dev *sensor) in ar0521_code_to_bpp() argument 161 switch (sensor->fmt.code) { in ar0521_code_to_bpp() 170 static int ar0521_write_regs(struct ar0521_dev *sensor, const __be16 *data, in ar0521_write_regs() argument 173 struct i2c_client *client = sensor->i2c_client; in ar0521_write_regs() 185 v4l2_err(&sensor->sd, "%s: I2C write error\n", __func__); in ar0521_write_regs() 192 static int ar0521_write_reg(struct ar0521_dev *sensor, u16 reg, u16 val) in ar0521_write_reg() argument 196 return ar0521_write_regs(sensor, buf, 2); in ar0521_write_reg() 199 static int ar0521_set_geometry(struct ar0521_dev *sensor) in ar0521_set_geometry() argument 202 u16 x = clamp((AR0521_WIDTH_MAX - sensor->fmt.width) / 2, in ar0521_set_geometry() 204 u16 y = clamp(((AR0521_HEIGHT_MAX - sensor->fmt.height) / 2) & ~1, in ar0521_set_geometry() [all …]
|
| H A D | imx415.c | 3 * Driver for the Sony IMX415 CMOS Image Sensor. 668 static int imx415_set_testpattern(struct imx415 *sensor, int val) in imx415_set_testpattern() argument 673 cci_write(sensor->regmap, IMX415_BLKLEVEL, 0x00, &ret); in imx415_set_testpattern() 674 cci_write(sensor->regmap, IMX415_TPG_EN_DUOUT, 0x01, &ret); in imx415_set_testpattern() 675 cci_write(sensor->regmap, IMX415_TPG_PATSEL_DUOUT, in imx415_set_testpattern() 677 cci_write(sensor->regmap, IMX415_TPG_COLORWIDTH, 0x01, &ret); in imx415_set_testpattern() 678 cci_write(sensor->regmap, IMX415_TESTCLKEN_MIPI, 0x20, &ret); in imx415_set_testpattern() 679 cci_write(sensor->regmap, IMX415_DIG_CLP_MODE, 0x00, &ret); in imx415_set_testpattern() 680 cci_write(sensor->regmap, IMX415_WRJ_OPEN, 0x00, &ret); in imx415_set_testpattern() 682 cci_write(sensor->regmap, IMX415_BLKLEVEL, in imx415_set_testpattern() [all …]
|
| H A D | ov8865.c | 809 /* Sensor */ 886 /* Sensor */ 1219 /* Sensor */ 1348 static int ov8865_read(struct ov8865_sensor *sensor, u16 address, u8 *value) in ov8865_read() argument 1351 struct i2c_client *client = sensor->i2c_client; in ov8865_read() 1371 static int ov8865_write(struct ov8865_sensor *sensor, u16 address, u8 value) in ov8865_write() argument 1374 struct i2c_client *client = sensor->i2c_client; in ov8865_write() 1387 static int ov8865_write_sequence(struct ov8865_sensor *sensor, in ov8865_write_sequence() argument 1395 ret = ov8865_write(sensor, sequence[i].address, in ov8865_write_sequence() 1407 static int ov8865_update_bits(struct ov8865_sensor *sensor, u16 address, in ov8865_update_bits() argument [all …]
|
| H A D | vd55g1.c | 3 * Driver for VD55G1 global shutter sensor family driver 452 * This mode acquires 2 frames on the sensor, the first one is ditched 624 static u32 vd55g1_get_fmt_code(struct vd55g1 *sensor, u32 code) in vd55g1_get_fmt_code() argument 628 if (sensor->id == VD55G1_MODEL_ID_VD55G1) in vd55g1_get_fmt_code() 637 dev_warn(sensor->dev, "Unsupported mbus format\n"); in vd55g1_get_fmt_code() 644 if (sensor->hflip_ctrl && sensor->vflip_ctrl) { in vd55g1_get_fmt_code() 645 j = (sensor->hflip_ctrl->val ? 1 : 0) + in vd55g1_get_fmt_code() 646 (sensor->vflip_ctrl->val ? 2 : 0); in vd55g1_get_fmt_code() 652 static s32 vd55g1_get_pixel_rate(struct vd55g1 *sensor, in vd55g1_get_pixel_rate() argument 655 return sensor->mipi_rate / vd55g1_get_fmt_bpp(format->code); in vd55g1_get_pixel_rate() [all …]
|
| /linux/drivers/thermal/st/ |
| H A D | stm_thermal.c | 99 static int stm_enable_irq(struct stm_thermal_sensor *sensor) in stm_enable_irq() argument 103 dev_dbg(sensor->dev, "low:%d high:%d\n", sensor->low_temp_enabled, in stm_enable_irq() 104 sensor->high_temp_enabled); in stm_enable_irq() 107 value = readl_relaxed(sensor->base + DTS_ITENR_OFFSET); in stm_enable_irq() 110 if (sensor->low_temp_enabled) in stm_enable_irq() 113 if (sensor->high_temp_enabled) in stm_enable_irq() 117 writel_relaxed(value, sensor->base + DTS_ITENR_OFFSET); in stm_enable_irq() 124 struct stm_thermal_sensor *sensor = sdata; in stm_thermal_irq_handler() local 126 dev_dbg(sensor->dev, "sr:%d\n", in stm_thermal_irq_handler() 127 readl_relaxed(sensor->base + DTS_SR_OFFSET)); in stm_thermal_irq_handler() [all …]
|
| H A D | st_thermal.c | 3 * ST Thermal Sensor Driver core routines 24 static int st_thermal_alloc_regfields(struct st_thermal_sensor *sensor) in st_thermal_alloc_regfields() argument 26 struct device *dev = sensor->dev; in st_thermal_alloc_regfields() 27 struct regmap *regmap = sensor->regmap; in st_thermal_alloc_regfields() 28 const struct reg_field *reg_fields = sensor->cdata->reg_fields; in st_thermal_alloc_regfields() 30 sensor->dcorrect = devm_regmap_field_alloc(dev, regmap, in st_thermal_alloc_regfields() 33 sensor->overflow = devm_regmap_field_alloc(dev, regmap, in st_thermal_alloc_regfields() 36 sensor->temp_data = devm_regmap_field_alloc(dev, regmap, in st_thermal_alloc_regfields() 39 if (IS_ERR(sensor->dcorrect) || in st_thermal_alloc_regfields() 40 IS_ERR(sensor->overflow) || in st_thermal_alloc_regfields() [all …]
|
| H A D | st_thermal_memmap.c | 3 * ST Thermal Sensor Driver for memory mapped sensors. 19 /* Power control bits for the memory mapped thermal sensor */ 25 * According to the STIH416 MPE temp sensor data sheet - 28 * sensor. regmap_update_bits() will be used to update the register. 39 struct st_thermal_sensor *sensor = sdata; in st_mmap_thermal_trip_handler() local 41 thermal_zone_device_update(sensor->thermal_dev, in st_mmap_thermal_trip_handler() 48 static int st_mmap_power_ctrl(struct st_thermal_sensor *sensor, in st_mmap_power_ctrl() argument 54 return regmap_update_bits(sensor->regmap, STIH416_MPE_CONF, mask, val); in st_mmap_power_ctrl() 57 static int st_mmap_alloc_regfields(struct st_thermal_sensor *sensor) in st_mmap_alloc_regfields() argument 59 struct device *dev = sensor->dev; in st_mmap_alloc_regfields() [all …]
|
| /linux/drivers/media/pci/intel/ |
| H A D | ipu-bridge.c | 47 * Do not add an entry for a sensor that is not actually supported. 103 * DMI matches for laptops which have their sensor mounted upside-down 167 /* camera sensor depends on IVSC in DSDT if exist */ in ipu_bridge_get_ivsc_acpi_dev() 211 static int ipu_bridge_check_ivsc_dev(struct ipu_sensor *sensor, in ipu_bridge_check_ivsc_dev() argument 226 sensor->csi_dev = csi_dev; in ipu_bridge_check_ivsc_dev() 227 sensor->ivsc_adev = adev; in ipu_bridge_check_ivsc_dev() 327 int ipu_bridge_parse_ssdb(struct acpi_device *adev, struct ipu_sensor *sensor) in ipu_bridge_parse_ssdb() argument 346 sensor->link = ssdb.link; in ipu_bridge_parse_ssdb() 347 sensor->lanes = ssdb.lanes; in ipu_bridge_parse_ssdb() 348 sensor->mclkspeed = ssdb.mclkspeed; in ipu_bridge_parse_ssdb() [all …]
|
| /linux/drivers/iio/light/ |
| H A D | Kconfig | 11 tristate "ACPI Ambient Light Sensor" 18 Ambient Light Sensor. 24 tristate "ADJD-S311-CR999 digital color sensor" 30 digital color light sensor. 36 tristate "ADUX1020 photometric sensor" 41 ADUX1020 photometric sensor. 47 tristate "AL3000a ambient light sensor" 51 ambient light sensor. 57 tristate "AL3010 ambient light sensor" 61 ambient light sensor. [all …]
|
| /linux/drivers/iio/common/scmi_sensors/ |
| H A D | scmi_iio.c | 4 * System Control and Management Interface(SCMI) based IIO sensor driver 44 struct scmi_iio_priv *sensor; in scmi_iio_sensor_update_cb() local 52 sensor = container_of(nb, struct scmi_iio_priv, sensor_update_nb); in scmi_iio_sensor_update_cb() 55 sensor->iio_buf[i] = sensor_update->readings[i].value; in scmi_iio_sensor_update_cb() 57 if (!sensor->sensor_info->timestamped) { in scmi_iio_sensor_update_cb() 71 tstamp_scale = sensor->sensor_info->tstamp_scale + 9; in scmi_iio_sensor_update_cb() 80 scmi_iio_dev = sensor->indio_dev; in scmi_iio_sensor_update_cb() 81 iio_push_to_buffers_with_timestamp(scmi_iio_dev, sensor->iio_buf, in scmi_iio_sensor_update_cb() 88 struct scmi_iio_priv *sensor = iio_priv(iio_dev); in scmi_iio_buffer_preenable() local 92 if (sensor->sensor_info->timestamped) in scmi_iio_buffer_preenable() [all …]
|
| /linux/drivers/thermal/ |
| H A D | hisi_thermal.c | 3 * HiSilicon thermal sensor driver 68 int (*get_temp)(struct hisi_thermal_sensor *sensor); 69 int (*enable_sensor)(struct hisi_thermal_sensor *sensor); 70 int (*disable_sensor)(struct hisi_thermal_sensor *sensor); 71 int (*irq_handler)(struct hisi_thermal_sensor *sensor); 77 struct hisi_thermal_sensor *sensor; member 243 * Temperature configuration register - Sensor selection 247 * 0x0: local sensor (default) 248 * 0x1: remote sensor 1 (ACPU cluster 1) 249 * 0x2: remote sensor 2 (ACPU cluster 0) [all …]
|
| /linux/drivers/input/rmi4/ |
| H A D | rmi_2d_sensor.c | 23 void rmi_2d_sensor_abs_process(struct rmi_2d_sensor *sensor, in rmi_2d_sensor_abs_process() argument 27 struct rmi_2d_axis_alignment *axis_align = &sensor->axis_align; in rmi_2d_sensor_abs_process() 34 obj->x = sensor->max_x - obj->x; in rmi_2d_sensor_abs_process() 37 obj->y = sensor->max_y - obj->y; in rmi_2d_sensor_abs_process() 57 obj->x = min(sensor->max_x, obj->x); in rmi_2d_sensor_abs_process() 60 obj->y = min(sensor->max_y, obj->y); in rmi_2d_sensor_abs_process() 62 sensor->tracking_pos[slot].x = obj->x; in rmi_2d_sensor_abs_process() 63 sensor->tracking_pos[slot].y = obj->y; in rmi_2d_sensor_abs_process() 67 void rmi_2d_sensor_abs_report(struct rmi_2d_sensor *sensor, in rmi_2d_sensor_abs_report() argument 71 struct rmi_2d_axis_alignment *axis_align = &sensor->axis_align; in rmi_2d_sensor_abs_report() [all …]
|
| H A D | rmi_f11.c | 36 * The properties for a given sensor are described by its query registers. The 38 * the F11 device queries as well as the sensor query information. 40 * Similarly, each sensor has control registers that govern its behavior. The 41 * size and layout of the control registers for a given sensor can be determined 44 * And in a likewise fashion, each sensor has data registers where it reports 49 * registers in order to determine the attributes of a sensor. Then 51 * registers for sensor. 66 * Writing this to the F11 command register will cause the sensor to 181 * struct f11_2d_sensor_queries - describes sensor capabilities 185 * @nr_fingers: describes the maximum number of fingers the 2-D sensor [all …]
|
| H A D | rmi_f12.c | 30 struct rmi_2d_sensor sensor; member 67 struct rmi_2d_sensor *sensor = &f12->sensor; in rmi_f12_read_sensor_tuning() local 68 struct rmi_function *fn = sensor->fn; in rmi_f12_read_sensor_tuning() 83 "F12 does not have the sensor tuning control register\n"); in rmi_f12_read_sensor_tuning() 103 sensor->max_x = (buf[offset + 1] << 8) | buf[offset]; in rmi_f12_read_sensor_tuning() 104 sensor->max_y = (buf[offset + 3] << 8) | buf[offset + 2]; in rmi_f12_read_sensor_tuning() 109 sensor->max_x, sensor->max_y); in rmi_f12_read_sensor_tuning() 118 /* Units 1/128 sensor pitch */ in rmi_f12_read_sensor_tuning() 144 sensor->x_mm = sensor->max_x / dpm_resolution; in rmi_f12_read_sensor_tuning() 145 sensor->y_mm = sensor->max_y / dpm_resolution; in rmi_f12_read_sensor_tuning() [all …]
|
| /linux/drivers/hid/amd-sfh-hid/hid_descriptor/ |
| H A D | amd_sfh_hid_report_desc.h | 13 // Accelerometer 3D Sensor 21 0x05, 0x20, /* HID usage page sensor */ 22 0x0A, 0x09, 0x03, /* Sensor property and sensor connection type */ 28 0x0A, 0x30, 0x08, /* Sensor property connection type intergated sel*/ 29 0x0A, 0x31, 0x08, /* Sensor property connection type attached sel */ 30 0x0A, 0x32, 0x08, /* Sensor property connection type external sel */ 33 0x0A, 0x16, 0x03, /* HID usage sensor property reporting state */ 39 0x0A, 0x40, 0x08, /* Sensor property report state no events sel */ 40 0x0A, 0x41, 0x08, /* Sensor property report state all events sel */ 41 0x0A, 0x42, 0x08, /* Sensor property report state threshold events sel */ [all …]
|
| /linux/drivers/iio/pressure/ |
| H A D | Kconfig | 10 tristate "Honeywell ABP pressure sensor driver" 25 tristate "Honeywell ABP2 pressure sensor series I2C driver" 30 series pressure and temperature digital sensor. 37 tristate "Honeywell ABP2 pressure sensor series SPI driver" 42 series pressure and temperature digital sensor. 49 tristate "ROHM BM1390GLV-Z pressure sensor driver" 55 Support for the ROHM BM1390 pressure sensor. The BM1390GLV-Z 58 sensor does also provide temperature measurements. 61 tristate "Bosch Sensortec BMP180/BMP280/BMP380/BMP580 pressure sensor driver" 71 an additional humidity sensor channel. [all …]
|
| /linux/drivers/hwmon/ |
| H A D | scpi-hwmon.c | 3 * System Control and Power Interface(SCPI) based hwmon sensor driver 57 static void scpi_scale_reading(u64 *value, struct sensor_data *sensor) in scpi_scale_reading() argument 59 if (scpi_scale[sensor->info.class] != sensor->scale) { in scpi_scale_reading() 60 *value *= scpi_scale[sensor->info.class]; in scpi_scale_reading() 61 do_div(*value, sensor->scale); in scpi_scale_reading() 70 struct sensor_data *sensor = &scpi_sensors->data[zone->sensor_id]; in scpi_read_temp() local 74 ret = scpi_ops->sensor_get_value(sensor->info.sensor_id, &value); in scpi_read_temp() 78 scpi_scale_reading(&value, sensor); in scpi_read_temp() 90 struct sensor_data *sensor; in scpi_show_sensor() local 94 sensor = container_of(attr, struct sensor_data, dev_attr_input); in scpi_show_sensor() [all …]
|