Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/i2c Rename tsl256x.c -> tsllux.c. No other changes ...
details: https://anonhg.NetBSD.org/src/rev/4f193decde83
branches: trunk
changeset: 949203:4f193decde83
user: thorpej <thorpej%NetBSD.org@localhost>
date: Mon Jan 04 22:09:35 2021 +0000
description:
Rename tsl256x.c -> tsllux.c. No other changes are made by this commit.
diffstat:
sys/dev/i2c/files.i2c | 4 +-
sys/dev/i2c/tsl256x.c | 1049 -------------------------------------------------
sys/dev/i2c/tsllux.c | 1049 +++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 1051 insertions(+), 1051 deletions(-)
diffs (truncated from 2124 to 300 lines):
diff -r 5b54534ef85c -r 4f193decde83 sys/dev/i2c/files.i2c
--- a/sys/dev/i2c/files.i2c Mon Jan 04 21:59:48 2021 +0000
+++ b/sys/dev/i2c/files.i2c Mon Jan 04 22:09:35 2021 +0000
@@ -1,4 +1,4 @@
-# $NetBSD: files.i2c,v 1.114 2020/12/29 01:47:51 thorpej Exp $
+# $NetBSD: files.i2c,v 1.115 2021/01/04 22:09:35 thorpej Exp $
obsolete defflag opt_i2cbus.h I2C_SCAN
define i2cbus { }
@@ -342,7 +342,7 @@
# Taos TSL256x ambient light sensor
device tsllux: sysmon_envsys
attach tsllux at iic
-file dev/i2c/tsl256x.c tsllux
+file dev/i2c/tsllux.c tsllux
# Philips/NXP TEA5767
device tea5767radio : radiodev
diff -r 5b54534ef85c -r 4f193decde83 sys/dev/i2c/tsl256x.c
--- a/sys/dev/i2c/tsl256x.c Mon Jan 04 21:59:48 2021 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1049 +0,0 @@
-/* $NetBSD: tsl256x.c,v 1.9 2021/01/04 21:59:48 thorpej Exp $ */
-
-/*-
- * Copyright (c) 2018 Jason R. Thorpe
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
- * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tsl256x.c,v 1.9 2021/01/04 21:59:48 thorpej Exp $");
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/device.h>
-#include <sys/conf.h>
-#include <sys/bus.h>
-#include <sys/kernel.h>
-#include <sys/kmem.h>
-#include <sys/mutex.h>
-#include <sys/proc.h>
-#include <sys/sysctl.h>
-
-#include <dev/i2c/i2cvar.h>
-#include <dev/i2c/tsl256xreg.h>
-
-#include <dev/sysmon/sysmonvar.h>
-
-struct tsllux_softc {
- device_t sc_dev;
- i2c_tag_t sc_i2c;
- i2c_addr_t sc_addr;
-
- uint32_t sc_poweron;
-
- /*
- * Locking order is:
- * tsllux mutex -> i2c bus
- */
- kmutex_t sc_lock;
-
- uint8_t sc_itime;
- uint8_t sc_gain;
- bool sc_cs_package;
- bool sc_auto_gain;
-
- struct sysmon_envsys *sc_sme;
- envsys_data_t sc_sensor;
-
- struct sysctllog *sc_sysctllog;
-};
-
-#define TSLLUX_F_CS_PACKAGE 0x01
-
-static int tsllux_match(device_t, cfdata_t, void *);
-static void tsllux_attach(device_t, device_t, void *);
-
-CFATTACH_DECL_NEW(tsllux, sizeof(struct tsllux_softc),
- tsllux_match, tsllux_attach, NULL, NULL);
-
-static const struct device_compatible_entry tsllux_compat_data[] = {
- { "amstaos,tsl2560", 0 },
- { "amstaos,tsl2561", 0 },
- { NULL, 0 }
-};
-
-static int tsllux_read1(struct tsllux_softc *, uint8_t, uint8_t *);
-static int tsllux_read2(struct tsllux_softc *, uint8_t, uint16_t *);
-static int tsllux_write1(struct tsllux_softc *, uint8_t, uint8_t);
-#if 0
-static int tsllux_write2(struct tsllux_softc *, uint8_t, uint16_t);
-#endif
-
-static void tsllux_sysctl_attach(struct tsllux_softc *);
-
-static int tsllux_poweron(struct tsllux_softc *);
-static int tsllux_poweroff(struct tsllux_softc *);
-
-static int tsllux_set_integration_time(struct tsllux_softc *, uint8_t);
-static int tsllux_set_gain(struct tsllux_softc *, uint8_t);
-static int tsllux_set_autogain(struct tsllux_softc *, bool);
-
-static int tsllux_get_lux(struct tsllux_softc *, uint32_t *,
- uint16_t *, uint16_t *);
-
-static void tsllux_sensors_refresh(struct sysmon_envsys *, envsys_data_t *);
-
-static int
-tsllux_match(device_t parent, cfdata_t match, void *aux)
-{
- struct i2c_attach_args *ia = aux;
- uint8_t id_reg;
- int error, match_result;
-
- if (iic_use_direct_match(ia, match, tsllux_compat_data, &match_result))
- return (match_result);
-
- switch (ia->ia_addr) {
- case TSL256x_SLAVEADDR_GND:
- case TSL256x_SLAVEADDR_FLOAT:
- case TSL256x_SLAVEADDR_VDD:
- break;
-
- default:
- return (0);
- }
-
- if (iic_acquire_bus(ia->ia_tag, 0) != 0)
- return (0);
- error = iic_smbus_read_byte(ia->ia_tag, ia->ia_addr,
- TSL256x_REG_ID | COMMAND6x_CMD, &id_reg, 0);
- iic_release_bus(ia->ia_tag, 0);
-
- if (error)
- return (0);
-
- /* XXX This loses if we have a 2560 rev. 0. */
- if (id_reg == 0)
- return (I2C_MATCH_ADDRESS_ONLY);
-
- return (I2C_MATCH_ADDRESS_AND_PROBE);
-}
-
-static void
-tsllux_attach(device_t parent, device_t self, void *aux)
-{
- struct tsllux_softc *sc = device_private(self);
- struct i2c_attach_args *ia = aux;
- bool have_i2c;
-
- /* XXX IPL_NONE changes when we support threshold interrupts. */
- mutex_init(&sc->sc_lock, MUTEX_DEFAULT, IPL_NONE);
-
- sc->sc_dev = self;
- sc->sc_i2c = ia->ia_tag;
- sc->sc_addr = ia->ia_addr;
-
- if (self->dv_cfdata != NULL &&
- self->dv_cfdata->cf_flags & TSLLUX_F_CS_PACKAGE)
- sc->sc_cs_package = true;
-
- if (iic_acquire_bus(ia->ia_tag, 0) != 0) {
- return;
- }
-
- have_i2c = true;
-
- /* Power on the device and clear any pending interrupts. */
- if (tsllux_write1(sc, TSL256x_REG_CONTROL | COMMAND6x_CLEAR,
- CONTROL6x_POWER_ON)) {
- aprint_error_dev(self, ": unable to power on device\n");
- goto out;
- }
- sc->sc_poweron = 1;
-
- /* Make sure interrupts are disabled. */
- if (tsllux_write1(sc, TSL256x_REG_INTERRUPT | COMMAND6x_CLEAR, 0)) {
- aprint_error_dev(self, ": unable to disable interrupts\n");
- goto out;
- }
-
- aprint_naive("\n");
- aprint_normal(": TSL256x Light-to-Digital converter%s\n",
- sc->sc_cs_package ? " (CS package)" : "");
-
- /* Inititalize timing to reasonable defaults. */
- sc->sc_auto_gain = true;
- sc->sc_gain = TIMING6x_GAIN_16X;
- if (tsllux_set_integration_time(sc, TIMING6x_INTEG_101ms)) {
- aprint_error_dev(self, ": unable to set integration time\n");
- goto out;
- }
-
- tsllux_poweroff(sc);
-
- iic_release_bus(ia->ia_tag, 0);
- have_i2c = false;
-
- tsllux_sysctl_attach(sc);
-
- sc->sc_sme = sysmon_envsys_create();
- sc->sc_sme->sme_name = device_xname(self);
- sc->sc_sme->sme_cookie = sc;
- sc->sc_sme->sme_refresh = tsllux_sensors_refresh;
-
- sc->sc_sensor.units = ENVSYS_LUX;
- sc->sc_sensor.state = ENVSYS_SINVALID;
- snprintf(sc->sc_sensor.desc, sizeof(sc->sc_sensor.desc),
- "ambient light");
- sysmon_envsys_sensor_attach(sc->sc_sme, &sc->sc_sensor);
-
- sysmon_envsys_register(sc->sc_sme);
-
- out:
- if (have_i2c) {
- if (sc->sc_poweron)
- tsllux_poweroff(sc);
- iic_release_bus(ia->ia_tag, 0);
- }
-}
-
-static int
-tsllux_sysctl_cs_package(SYSCTLFN_ARGS)
-{
- struct tsllux_softc *sc;
- struct sysctlnode node;
- int error;
- u_int val;
-
- node = *rnode;
- sc = node.sysctl_data;
-
- mutex_enter(&sc->sc_lock);
- val = sc->sc_cs_package ? 1 : 0;
- node.sysctl_data = &val;
- error = sysctl_lookup(SYSCTLFN_CALL(&node));
- if (error || newp == NULL) {
- mutex_exit(&sc->sc_lock);
- return (error);
- }
-
- /* CS package indicator is used only in software; no need for I2C. */
-
- sc->sc_cs_package = val ? true : false;
- mutex_exit(&sc->sc_lock);
-
- return (error);
-}
-
-static int
-tsllux_sysctl_autogain(SYSCTLFN_ARGS)
-{
- struct tsllux_softc *sc;
- struct sysctlnode node;
- int error;
- u_int val;
-
- node = *rnode;
- sc = node.sysctl_data;
-
- mutex_enter(&sc->sc_lock);
- val = sc->sc_auto_gain ? 1 : 0;
- node.sysctl_data = &val;
- error = sysctl_lookup(SYSCTLFN_CALL(&node));
- if (error || newp == NULL) {
- mutex_exit(&sc->sc_lock);
- return (error);
- }
-
- /* Auto-gain is a software feature; no need for I2C. */
-
- error = tsllux_set_autogain(sc, val ? true : false);
- mutex_exit(&sc->sc_lock);
-
- return (error);
-}
-
-static int
-tsllux_sysctl_gain(SYSCTLFN_ARGS)
Home |
Main Index |
Thread Index |
Old Index