Add lock protection from race conditions to the 104-quad-8 counter
driver for filter clock prescaler code changes. Mutex calls used for
protection.
Signed-off-by: Syed Nayyar Waris <syednwaris@gmail.com>
Fixes: de65d05563 ("counter: 104-quad-8: Support Filter Clock Prescaler")
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Add lock protection from race conditions to 104-quad-8 counter driver
for differential encoder status code changes. Mutex lock calls used for
protection.
Signed-off-by: Syed Nayyar Waris <syednwaris@gmail.com>
Fixes: 954ab5cc5f ("counter: 104-quad-8: Support Differential Encoder Cable Status")
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
The ACCES 104-QUAD-8 series provides status information about the
connection state of the differential encoder cable inputs. This patch
implements support to expose such information from these devices.
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
The ACCES 104-QUAD-8 series does active filtering on the quadrature
input signals via the PC/104 bus clock (OSC 14.318 MHz). This patch
exposes the filter clock prescaler available on each channel.
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
The stm32-timer-cnt driver doesn't use the iio interface. The iio headers
aren't relevant and can be removed as reported by William in [1].
With this change, mod_devicetable.h needs to be added to define the
'of_device_id' struct.
[1] https://lkml.org/lkml/2020/2/10/1516
Reported-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Add suspend/resume PM sleep ops. When going to low power, enforce the
counter isn't active. Gracefully restore its state upon resume in case
it's been left enabled prior to suspend.
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
The count_read and count_write callbacks are simplified to pass val as
unsigned long rather than as an opaque data structure. The opaque
counter_count_read_value and counter_count_write_value structures,
counter_count_value_type enum, and relevant counter_count_read_value_set
and counter_count_write_value_get functions, are removed as they are no
longer used.
Cc: Patrick Havelange <patrick.havelange@essensium.com>
Acked-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Acked-by: David Lechner <david@lechnology.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Immutable branch being merged in. Created as this also involves
moving some dependencies around, outside of the counter subsystem.
It's possible it will want to be pulled into other trees.
This adds a new counter driver for the Texas Instruments Enhanced
Quadrature Encoder Pulse (eQEP) module.
Only very basic functionality is currently implemented - only enough to
be able to read the position. The actual device has many more features
which can be added to the driver on an as-needed basis.
It is not possible to read the QEPA/B signal values in hardware, so
that feature is omitted.
The TI_PWMSS kernel option is selected in Kconfig to enable the parent
bus, which is needed for power management.
Signed-off-by: David Lechner <david@lechnology.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
There is an if statement that is indented one level too deeply,
remove the extraneous tabs.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Make use of devm_counter_register.
Then we can remove redundant unregistration API
usage to make code simpler.
Signed-off-by: Chuhong Yuan <hslester96@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Here is the big Staging and IIO driver update for 5.3-rc1.
Lots of new IIO drivers are in here, along with loads of tiny staging
driver cleanups and fixes. Overall we almost break even with the same
lines added as removed.
Full details are in the shortlog, they are too large to list here.
All of these changes have been in linux-next for a while with no
reported issues.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-----BEGIN PGP SIGNATURE-----
iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCXSXlWA8cZ3JlZ0Brcm9h
aC5jb20ACgkQMUfUDdst+ym5lgCgwNVvum2lwWzAVPkVEMqpGYLZPLgAoJqegC9o
JsdX6tFoAC8q8+FXWgZ4
=di3h
-----END PGP SIGNATURE-----
Merge tag 'staging-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging
Pull staging and IIO driver updates from Greg KH:
"Here is the big Staging and IIO driver update for 5.3-rc1.
Lots of new IIO drivers are in here, along with loads of tiny staging
driver cleanups and fixes. Overall we almost break even with the same
lines added as removed.
Full details are in the shortlog, they are too large to list here.
All of these changes have been in linux-next for a while with no
reported issues"
* tag 'staging-5.3-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging: (608 commits)
staging: kpc2000: simplify comparison to NULL in fileops.c
staging: kpc2000: simplify comparison to NULL in dma.c
staging: kpc2000: simplify comparison to NULL in kpc2000_spi.c
staging: rtl8723bs: hal: remove redundant assignment to packetType
staging: rtl8723bs: Change return type of hal_btcoex_IsBtDisabled()
staging: rtl8723bs: Remove rtw_btcoex_DisplayBtCoexInfo()
staging: rtl8723bs: Remove function rtw_btcoex_GetDBG()
staging: rtl8723bs: Remove function rtw_btcoex_SetDBG()
staging: rtl8723bs: Remove rtw_btcoex_IsBTCoexCtrlAMPDUSize()
staging: rtl8723bs: Remove rtw_btcoex_BtInfoNotify()
staging: rtl8723bs: Remove rtw_btcoex_ScanNotify()
staging: rtl8723bs: Remove rtw_btcoex_SetSingleAntPath()
staging: rtl8723bs: Remove rtw_btcoex_SetPGAntNum()
staging: rtl8192e: remove redundant initialization of rtstatus
staging: rtl8723bs: Remove rtw_btcoex_GetRaMask()
staging: rtl8723bs: Remove rtw_btcoex_SetChipType()
staging: rtl8723bs: Remove rtw_btcoex_ConnectNotify()
staging: rtl8723bs: Remove rtw_btcoex_SetBTCoexist()
staging: rtl8723bs: Remove rtw_btcoex_IsBtDisabled()
staging: rtl8723bs: Remove rtw_btcoex_IsBtControlLps()
...
A few bits for the counters subsystem mixed in here as well.
There are some late breaking fixes as well, which aren't so urgent
they can't wait for the merge window.
New Device Support
* adf4371
- New driver + bindings.
- Support the adf4372 PLL. Mostly ID and bindings.
* ad8366 (note includes rework of driver needed to allow support for these).
- Support the ADL5240 variable gain amplifier (VGA).
- Support the ADA4961 digital gain amplifier (DGA).
* dps310
- New driver, in several parts from different authors for this temp
and pressure sensor.
- Includes errata workaround for a temperature reading issue.
* stk3310
- Support the stk3335, mostly ID.
Features and cleanups
* core
- drop error handling on debugfs registration.
- harden by making sure we don't overrun iio_chan_info_postfix.
* docs
- convert remaining docs to rst. At somepoint we'll fit these few
into the main IIO docs.
- improve sampling_frequency_available docs but explaining the
range form.
* ad_sigma_delta
- Drop a pointless goto.
* ad2s1210
- Drop pointless platform data null check seeing as we don't actually
use platform data anymore.
* ad7124
- Relax limitation on channel numbers to allow pseudo different channels.
- Support control of whether the input is buffered via DT.
- Use dynamic allocation for channel configuration to make it easier
to support new devices.
- YAML binding conversion.
* ad7150
- Comment tidy up.
- Consistent and simple if (ret) handling of i2c errors.
- FIELD_GET and GENMASK.
- Ternary rather than !!(condition) for readability.
- Use macros to avoid repetition of channel definitions.
* ad7606
- Add software channel config (rather that pin controlled)
- Refactor to simplify addition of new part in future.
* ad7746
- of_deivce_id table.
* ad7780
- MAINTAINERS entry
- YAML DT bindings.
* ad8366
- Stop using core mlock in favour of well scoped local lock.
- SPDX + copyright date update.
* ad9834
- of_device_id table
* adf4371
- Add support for output stage muting before lock on has occured.
* adis library
- MAINTAINERS entry to reflect that this now Alexandru's problem ;)
* adis162xx:
- Fix a slightly incorrect set of comments and print statements on
minimum supported voltage.
* adis16203
- of_device_id table.
* adis16240
- Add of_device_id table (in two parts as first patch only used it for
MODULE_DEVICE_TABLE.)
* adt7316-spi
- of_device_id table
* adxl372
- YAML DT binding conversion.
- Cleanup use of buffer callback functions (precursor to core rework).
* bh1710
- Simplify getting the i2c adapter from the client.
* dht11
- Mote to newer GPIO consumer interface.
* kxcjk-1013.c
- Add binding for sensor in display of some ultrabooks after userspace
tools updated for it not be a problem to report two similar sensors.
* imx7d
- drop unused variables.
- white space
- define instead of variable for clock frequency that is fixed.
- drop pointless error message.
* messon_saradc
- SPDX
* sps30
- MAINTAINERS entry
- YAML binding conversion.
* st_accel
- Tidy up ordering in various buffer related callbacks. This is
part of a long running effort to simplify the core code.
* stm32-dfsdm:
- Manage the resolution cleanly in triggerd modes.
- Add fast mode support which allows more flexible filter choices.
- Add a comment on the reason for a 16 bit record when technically
not 'required'.
* st_lsm6dsx
- Embed device name in the sensor_settings struct as i3c doesn't
have a convenient name field to use for this.
* xilinx-adc
- Relax constraints on supported platforms to reflect that this
can used with FPGAs on PCIe cards and hence many architectures.
* counters/ftm-quaddec
- Fix some formatting io MODULE_AUTHOR
- MAINTAINERS entry
Fixes
* tools
- fix incorrect handling of 32 bit channels.
* sca3000
- Potential endian bug that is unlikely to bite anyone (be64 host
seems unlikely for this old part).
* stm32-adc
- Add vdda-supply. On some boards it needs to be turned on to supply
the ADC. DT bindings included.
* stm32-dfsdm
- Fix output resolution to work with filter orders other than 3.
- Fix output datatype as it's signed and previously claimed not to be.
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAl0VHIkRHGppYzIzQGtl
cm5lbC5vcmcACgkQVIU0mcT0FojyxhAAgrLRy2wlHjQCAh0S6J22LKs02uPX1qvY
nm1aI/av2DGcMCV2NF6J1sW2Mocvtt5a79/1f/wRqDzOHBrTpFr0Q0Ngwijv9bzc
fv6NwfHlWolmXynKx8wK4b6Sa3KVCkltojEVpEVbhkuMkafSQ+pQzYF1Uf7enOrX
j3Gq6NYaCks4YtFZsBphgzo3DC0mh7CfunlPiOdVcgcg4Pj/KZY9QCX86fJx972x
YI3BRFHnDSMDOxOTjeqeKvMiqU2zLPlqLSEOCUw2XCrh6HI9qFiU+LVsYx6SP0tx
aJ2q+qYc9raOTANHk7O2JZYWv/52JXvtKcFSLiuQdABjaAI20xEr1QAZYVYUiXmg
dFH6lBsWvQyAy5F/SyZ5tavZvTfGsNDB5LhlpEggeO2W6cIIL4CLfHimB2EcxFSH
utqEA72HQZosEUKut1jbmG6iYMiRnHS72pLOqkJ6HC/2/pZfoEWlEH9x/S3xbBsW
918ISs9852VwjebQwck96+Dh0LwiKOl8Aii5ONzfNObJB6/JbULPoKKArsMdENQA
mqDXLOMz6GspY3JgiVDCXAwg2x2Ht/ictR6svRJtOTLiBU2Iybpm/HRkPePhoePF
HLw8fhwE+mOSWr22KhzjUJBHEAkoejo/14XOgKSTkO9V6amLlOWRDV3uK2PksmdI
7DQyYhX9Tos=
=a3vh
-----END PGP SIGNATURE-----
Merge tag 'iio-for-5.3b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-next
Jonathan writes:
Second set of IIO device support, features, cleanups and minor fixes for 5.3.
A few bits for the counters subsystem mixed in here as well.
There are some late breaking fixes as well, which aren't so urgent
they can't wait for the merge window.
New Device Support
* adf4371
- New driver + bindings.
- Support the adf4372 PLL. Mostly ID and bindings.
* ad8366 (note includes rework of driver needed to allow support for these).
- Support the ADL5240 variable gain amplifier (VGA).
- Support the ADA4961 digital gain amplifier (DGA).
* dps310
- New driver, in several parts from different authors for this temp
and pressure sensor.
- Includes errata workaround for a temperature reading issue.
* stk3310
- Support the stk3335, mostly ID.
Features and cleanups
* core
- drop error handling on debugfs registration.
- harden by making sure we don't overrun iio_chan_info_postfix.
* docs
- convert remaining docs to rst. At somepoint we'll fit these few
into the main IIO docs.
- improve sampling_frequency_available docs but explaining the
range form.
* ad_sigma_delta
- Drop a pointless goto.
* ad2s1210
- Drop pointless platform data null check seeing as we don't actually
use platform data anymore.
* ad7124
- Relax limitation on channel numbers to allow pseudo different channels.
- Support control of whether the input is buffered via DT.
- Use dynamic allocation for channel configuration to make it easier
to support new devices.
- YAML binding conversion.
* ad7150
- Comment tidy up.
- Consistent and simple if (ret) handling of i2c errors.
- FIELD_GET and GENMASK.
- Ternary rather than !!(condition) for readability.
- Use macros to avoid repetition of channel definitions.
* ad7606
- Add software channel config (rather that pin controlled)
- Refactor to simplify addition of new part in future.
* ad7746
- of_deivce_id table.
* ad7780
- MAINTAINERS entry
- YAML DT bindings.
* ad8366
- Stop using core mlock in favour of well scoped local lock.
- SPDX + copyright date update.
* ad9834
- of_device_id table
* adf4371
- Add support for output stage muting before lock on has occured.
* adis library
- MAINTAINERS entry to reflect that this now Alexandru's problem ;)
* adis162xx:
- Fix a slightly incorrect set of comments and print statements on
minimum supported voltage.
* adis16203
- of_device_id table.
* adis16240
- Add of_device_id table (in two parts as first patch only used it for
MODULE_DEVICE_TABLE.)
* adt7316-spi
- of_device_id table
* adxl372
- YAML DT binding conversion.
- Cleanup use of buffer callback functions (precursor to core rework).
* bh1710
- Simplify getting the i2c adapter from the client.
* dht11
- Mote to newer GPIO consumer interface.
* kxcjk-1013.c
- Add binding for sensor in display of some ultrabooks after userspace
tools updated for it not be a problem to report two similar sensors.
* imx7d
- drop unused variables.
- white space
- define instead of variable for clock frequency that is fixed.
- drop pointless error message.
* messon_saradc
- SPDX
* sps30
- MAINTAINERS entry
- YAML binding conversion.
* st_accel
- Tidy up ordering in various buffer related callbacks. This is
part of a long running effort to simplify the core code.
* stm32-dfsdm:
- Manage the resolution cleanly in triggerd modes.
- Add fast mode support which allows more flexible filter choices.
- Add a comment on the reason for a 16 bit record when technically
not 'required'.
* st_lsm6dsx
- Embed device name in the sensor_settings struct as i3c doesn't
have a convenient name field to use for this.
* xilinx-adc
- Relax constraints on supported platforms to reflect that this
can used with FPGAs on PCIe cards and hence many architectures.
* counters/ftm-quaddec
- Fix some formatting io MODULE_AUTHOR
- MAINTAINERS entry
Fixes
* tools
- fix incorrect handling of 32 bit channels.
* sca3000
- Potential endian bug that is unlikely to bite anyone (be64 host
seems unlikely for this old part).
* stm32-adc
- Add vdda-supply. On some boards it needs to be turned on to supply
the ADC. DT bindings included.
* stm32-dfsdm
- Fix output resolution to work with filter orders other than 3.
- Fix output datatype as it's signed and previously claimed not to be.
* tag 'iio-for-5.3b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio: (68 commits)
iio: iio-utils: Fix possible incorrect mask calculation
iio: frequency: adf4371: Add support for output stage mute
dt-bindings: iio: frequency: Add ADF4372 PLL documentation
iio: frequency: adf4371: Add support for ADF4372 PLL
dt-bindings: iio: adc: Add buffered input property
Convert AD7124 bindings documentation to YAML format.
iio: adc: ad7124: Shift to dynamic allocation for channel configuration
iio: adc: ad7124: Add buffered input support
iio: adc: ad7124: Remove input number limitation
MAINTAINERS: add ADIS IMU driver library entry
iio: adis162xx: fix low-power docs & reports
counter/ftm-quaddec: Add missing '>' in MODULE_AUTHOR
iio: core: no need to check return value of debugfs_create functions
docs: iio: convert to ReST
iio: adc: stm32-adc: add missing vdda-supply
dt-bindings: iio: adc: stm32: add missing vdda supply
iio: adc: stm32-dfsdm: add comment for 16 bits record
iio: adc: stm32-dfsdm: add fast mode support
iio: adc: stm32-dfsdm: manage data resolution in trigger mode
iio: adc: stm32-dfsdm: fix data type
...
The last '>' chars were missing in the MODULE_AUTHOR entries.
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Fixes: a3b9a99980 ("counter: add FlexTimer Module Quadrature decoder counter driver")
Signed-off-by: Patrick Havelange <patrick.havelange@essensium.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
* ad7150
- sense of bit for controlling adaptive vs fixed threshold was flipped.
* adt7316
- Fix a build issue due to wrong headers for gpio usage.
* lsm6dsx
- correctly suspend / resume i2c slaves when the host goes to sleep.
* mlx90632
- relax a compatability check to allow for newer devices.
Also one counters fix
* counter/ftm-quaddec
- missing dependencies in Kconfig.
-----BEGIN PGP SIGNATURE-----
iQJFBAABCAAvFiEEbilms4eEBlKRJoGxVIU0mcT0FogFAl0H5PURHGppYzIzQGtl
cm5lbC5vcmcACgkQVIU0mcT0Foh7bhAAqF/VG9KhIioY4ov5U+Exh5OGzirhTLKC
TyuK4fnSHO9avql1lTAc9b/tt2tBdE4f0vel6CSP+1GlbwfG01AYUu+ZW7j/GkgT
D09o4IH1TspqH5nIc2JunZwYqPJG2v7Fis9IMtS13eTJ+csf9EhVCuIf8tnaPwyM
/OH7t3JdSqxtsxHECEsZhl5IDrqZKyQI3+7MtlpcnuQpNjrrwxey4B54csZamUH8
nhefM7CtI+roaT+Ydp5oNpvpVXhNH54rVKwEkJfeuhiuviHoO7SgUF59u4vp9JYa
5dVo+T8+b2gsAt1w4jDCNDALTrFYL1d4XCyHuW+ZvpTGfb99E0g2QRStuBJp0Nyn
9s9K05KTdcHi3HBUxx+pKh7MDUBzKSm5T5euq4ZHRUKF3vjfBhsoN4iVh31IHa53
Nv28vnnxUd7RXHZonoi9wIT0zoDSY1IvpNGtwJaOjBJNcUjtDQivV2KqqvvvSfj0
g7KswaUB5icRR/mtL4Jj2j0voD2e+mMXgknRmHJthXKBKzs4lQHFPqI1rZQy8DRg
2YCi5zJNPBmf7hNbMqyt5YEkflZST3zzOUBRxdju4w3lwKZl6+bQd5B82ET6DZSr
n99WXsGcdck/JEWomUhGb5uTbS2LAgsVLIXJTDzgzwQqE4Vp7FFYIHDNeTJx43Cm
bEvNn0cT6a8=
=2i3G
-----END PGP SIGNATURE-----
Merge tag 'iio-fixes-for-5.2b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio into staging-linus
Jonathan writes:
Second set of IIO fixes for the 5.2 cycle.
* ad7150
- sense of bit for controlling adaptive vs fixed threshold was flipped.
* adt7316
- Fix a build issue due to wrong headers for gpio usage.
* lsm6dsx
- correctly suspend / resume i2c slaves when the host goes to sleep.
* mlx90632
- relax a compatability check to allow for newer devices.
Also one counters fix
* counter/ftm-quaddec
- missing dependencies in Kconfig.
* tag 'iio-fixes-for-5.2b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio:
counter/ftm-quaddec: Add missing dependencies in Kconfig
staging: iio: adt7316: Fix build errors when GPIOLIB is not set
iio: temperature: mlx90632 Relax the compatibility check
iio: imu: st_lsm6dsx: fix PM support for st_lsm6dsx i2c controller
staging:iio:ad7150: fix threshold mode config bit
This driver uses devm_ioremap and of* functions. This fixes a
linking failure with e.g. ARCH=um.
Reported-by: kbuild test robot <lkp@intel.com>
Signed-off-by: Patrick Havelange <patrick.havelange@essensium.com>
Fixes: a3b9a99 ("counter: add FlexTimer Module Quadrature decoder counter driver")
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Fix sparse warning:
drivers/counter/104-quad-8.c:836:26: warning:
symbol 'quad8_ops' was not declared. Should it be static?
Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Acked-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Add SPDX license identifiers to all Make/Kconfig files which:
- Have no license information of any form
These files fall under the project license, GPL v2 only. The resulting SPDX
license identifier is:
GPL-2.0-only
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This driver exposes the counter for the quadrature decoder of the
FlexTimer Module, present in the LS1021A soc.
Signed-off-by: Patrick Havelange <patrick.havelange@essensium.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Add support for new counter device to stm32-lptimer.
Signed-off-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Implement counter part of the STM32 timer hardware block by using
counter API. Hardware only supports X2 and X4 quadrature modes. A
ceiling value can be set to define the maximum value reachable by the
counter.
Signed-off-by: Benjamin Gaignard <benjamin.gaignard@st.com>
Co-authored-by: Fabrice Gasnier <fabrice.gasnier@st.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This patch adds support for the Generic Counter interface to the
104-QUAD-8 driver. The existing 104-QUAD-8 device interface should not
be affected by this patch; all changes are intended as supplemental
additions as perceived by the user.
Generic Counter Counts are created for the eight quadrature channel
counts, as well as their respective quadrature A and B Signals (which
are associated via respective Synapse structures) and respective index
Signals.
The new Generic Counter interface sysfs attributes are intended to
expose the same functionality and data available via the existing
104-QUAD-8 IIO device interface; the Generic Counter interface serves
to provide the respective functionality and data in a standard way
expected of counter devices.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This patch introduces the Generic Counter interface for supporting
counter devices.
In the context of the Generic Counter interface, a counter is defined as
a device that reports one or more "counts" based on the state changes of
one or more "signals" as evaluated by a defined "count function."
Driver callbacks should be provided to communicate with the device: to
read and write various Signals and Counts, and to set and get the
"action mode" and "count function" for various Synapses and Counts
respectively.
To support a counter device, a driver must first allocate the available
Counter Signals via counter_signal structures. These Signals should
be stored as an array and set to the signals array member of an
allocated counter_device structure before the Counter is registered to
the system.
Counter Counts may be allocated via counter_count structures, and
respective Counter Signal associations (Synapses) made via
counter_synapse structures. Associated counter_synapse structures are
stored as an array and set to the the synapses array member of the
respective counter_count structure. These counter_count structures are
set to the counts array member of an allocated counter_device structure
before the Counter is registered to the system.
A counter device is registered to the system by passing the respective
initialized counter_device structure to the counter_register function;
similarly, the counter_unregister function unregisters the respective
Counter. The devm_counter_register and devm_counter_unregister functions
serve as device memory-managed versions of the counter_register and
counter_unregister functions respectively.
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>