提交 45d9ab8a 编写于 作者: L Linus Torvalds

Merge tag 'staging-4.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging

Pull staging/IIO driver fixes from Greg KH:
 "Here are a few small staging and iio driver fixes for -rc4.

  Nothing major, just a few small bugfixes for some reported issues, and
  a MAINTAINERS file update for the fbtft drivers.

  We also re-enable the building of the erofs filesystem as the XArray
  patches that were causing it to break never got merged in the -rc1
  cycle, so there's no reason it can't be turned back on for now. The
  problem that was previously there is now being handled in the Xarray
  tree at the moment, so it will not hit us again in the future.

  All of these patches have been in linux-next with no reported issues"

* tag 'staging-4.19-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging:
  staging: vboxvideo: Change address of scanout buffer on page-flip
  staging: vboxvideo: Fix IRQs no longer working
  staging: gasket: TODO: re-implement using UIO
  staging/fbtft: Update TODO and mailing lists
  staging: erofs: rename superblock flags (MS_xyz -> SB_xyz)
  iio: imu: st_lsm6dsx: take into account ts samples in wm configuration
  Revert "iio: temperature: maxim_thermocouple: add MAX31856 part"
  Revert "staging: erofs: disable compiling temporarile"
  MAINTAINERS: Switch a maintainer for drivers/staging/gasket
  staging: wilc1000: revert "fix TODO to compile spi and sdio components in single module"
...@@ -5625,6 +5625,8 @@ F: lib/fault-inject.c ...@@ -5625,6 +5625,8 @@ F: lib/fault-inject.c
FBTFT Framebuffer drivers FBTFT Framebuffer drivers
M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
L: dri-devel@lists.freedesktop.org
L: linux-fbdev@vger.kernel.org
S: Maintained S: Maintained
F: drivers/staging/fbtft/ F: drivers/staging/fbtft/
...@@ -6060,7 +6062,7 @@ F: Documentation/gcc-plugins.txt ...@@ -6060,7 +6062,7 @@ F: Documentation/gcc-plugins.txt
GASKET DRIVER FRAMEWORK GASKET DRIVER FRAMEWORK
M: Rob Springer <rspringer@google.com> M: Rob Springer <rspringer@google.com>
M: John Joseph <jnjoseph@google.com> M: Todd Poynor <toddpoynor@google.com>
M: Ben Chan <benchan@chromium.org> M: Ben Chan <benchan@chromium.org>
S: Maintained S: Maintained
F: drivers/staging/gasket/ F: drivers/staging/gasket/
......
...@@ -187,12 +187,15 @@ static int st_lsm6dsx_set_fifo_odr(struct st_lsm6dsx_sensor *sensor, ...@@ -187,12 +187,15 @@ static int st_lsm6dsx_set_fifo_odr(struct st_lsm6dsx_sensor *sensor,
int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sensor *sensor, u16 watermark) int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sensor *sensor, u16 watermark)
{ {
u16 fifo_watermark = ~0, cur_watermark, sip = 0, fifo_th_mask; u16 fifo_watermark = ~0, cur_watermark, fifo_th_mask;
struct st_lsm6dsx_hw *hw = sensor->hw; struct st_lsm6dsx_hw *hw = sensor->hw;
struct st_lsm6dsx_sensor *cur_sensor; struct st_lsm6dsx_sensor *cur_sensor;
int i, err, data; int i, err, data;
__le16 wdata; __le16 wdata;
if (!hw->sip)
return 0;
for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) { for (i = 0; i < ST_LSM6DSX_ID_MAX; i++) {
cur_sensor = iio_priv(hw->iio_devs[i]); cur_sensor = iio_priv(hw->iio_devs[i]);
...@@ -203,14 +206,10 @@ int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sensor *sensor, u16 watermark) ...@@ -203,14 +206,10 @@ int st_lsm6dsx_update_watermark(struct st_lsm6dsx_sensor *sensor, u16 watermark)
: cur_sensor->watermark; : cur_sensor->watermark;
fifo_watermark = min_t(u16, fifo_watermark, cur_watermark); fifo_watermark = min_t(u16, fifo_watermark, cur_watermark);
sip += cur_sensor->sip;
} }
if (!sip) fifo_watermark = max_t(u16, fifo_watermark, hw->sip);
return 0; fifo_watermark = (fifo_watermark / hw->sip) * hw->sip;
fifo_watermark = max_t(u16, fifo_watermark, sip);
fifo_watermark = (fifo_watermark / sip) * sip;
fifo_watermark = fifo_watermark * hw->settings->fifo_ops.th_wl; fifo_watermark = fifo_watermark * hw->settings->fifo_ops.th_wl;
err = regmap_read(hw->regmap, hw->settings->fifo_ops.fifo_th.addr + 1, err = regmap_read(hw->regmap, hw->settings->fifo_ops.fifo_th.addr + 1,
......
...@@ -258,7 +258,6 @@ static int maxim_thermocouple_remove(struct spi_device *spi) ...@@ -258,7 +258,6 @@ static int maxim_thermocouple_remove(struct spi_device *spi)
static const struct spi_device_id maxim_thermocouple_id[] = { static const struct spi_device_id maxim_thermocouple_id[] = {
{"max6675", MAX6675}, {"max6675", MAX6675},
{"max31855", MAX31855}, {"max31855", MAX31855},
{"max31856", MAX31855},
{}, {},
}; };
MODULE_DEVICE_TABLE(spi, maxim_thermocouple_id); MODULE_DEVICE_TABLE(spi, maxim_thermocouple_id);
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
config EROFS_FS config EROFS_FS
tristate "EROFS filesystem support" tristate "EROFS filesystem support"
depends on BROKEN depends on BLOCK
help help
EROFS(Enhanced Read-Only File System) is a lightweight EROFS(Enhanced Read-Only File System) is a lightweight
read-only file system with modern designs (eg. page-sized read-only file system with modern designs (eg. page-sized
......
...@@ -340,7 +340,7 @@ static int erofs_read_super(struct super_block *sb, ...@@ -340,7 +340,7 @@ static int erofs_read_super(struct super_block *sb,
goto err_sbread; goto err_sbread;
sb->s_magic = EROFS_SUPER_MAGIC; sb->s_magic = EROFS_SUPER_MAGIC;
sb->s_flags |= MS_RDONLY | MS_NOATIME; sb->s_flags |= SB_RDONLY | SB_NOATIME;
sb->s_maxbytes = MAX_LFS_FILESIZE; sb->s_maxbytes = MAX_LFS_FILESIZE;
sb->s_time_gran = 1; sb->s_time_gran = 1;
...@@ -627,7 +627,7 @@ static int erofs_remount(struct super_block *sb, int *flags, char *data) ...@@ -627,7 +627,7 @@ static int erofs_remount(struct super_block *sb, int *flags, char *data)
{ {
BUG_ON(!sb_rdonly(sb)); BUG_ON(!sb_rdonly(sb));
*flags |= MS_RDONLY; *flags |= SB_RDONLY;
return 0; return 0;
} }
......
...@@ -2,3 +2,7 @@ ...@@ -2,3 +2,7 @@
GPIO descriptor API in <linux/gpio/consumer.h> and look up GPIO GPIO descriptor API in <linux/gpio/consumer.h> and look up GPIO
lines from device tree, ACPI or board files, board files should lines from device tree, ACPI or board files, board files should
use <linux/gpio/machine.h> use <linux/gpio/machine.h>
* convert all these over to drm_simple_display_pipe and submit for inclusion
into the DRM subsystem under drivers/gpu/drm - fbdev doesn't take any new
drivers anymore.
This is a list of things that need to be done to get this driver out of the This is a list of things that need to be done to get this driver out of the
staging directory. staging directory.
- Implement the gasket framework's functionality through UIO instead of
introducing a new user-space drivers framework that is quite similar.
UIO provides the necessary bits to implement user-space drivers. Meanwhile
the gasket APIs adds some extra conveniences like PCI BAR mapping, and
MSI interrupts. Add these features to the UIO subsystem, then re-implement
the Apex driver as a basic UIO driver instead (include/linux/uio_driver.h)
- Document sysfs files with Documentation/ABI/ entries. - Document sysfs files with Documentation/ABI/ entries.
- Use misc interface instead of major number for driver version description. - Use misc interface instead of major number for driver version description.
- Add descriptions of module_param's - Add descriptions of module_param's
- apex_get_status() should actually check status. - apex_get_status() should actually check status.
- "drivers" should never be dealing with "raw" sysfs calls or mess around with - "drivers" should never be dealing with "raw" sysfs calls or mess around with
kobjects at all. The driver core should handle all of this for you kobjects at all. The driver core should handle all of this for you
automaically. There should not be a need for raw attribute macros. automaically. There should not be a need for raw attribute macros.
...@@ -59,6 +59,11 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -59,6 +59,11 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
ret = PTR_ERR(dev); ret = PTR_ERR(dev);
goto err_drv_alloc; goto err_drv_alloc;
} }
ret = pci_enable_device(pdev);
if (ret)
goto err_pci_enable;
dev->pdev = pdev; dev->pdev = pdev;
pci_set_drvdata(pdev, dev); pci_set_drvdata(pdev, dev);
...@@ -75,6 +80,8 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -75,6 +80,8 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
err_drv_dev_register: err_drv_dev_register:
vbox_driver_unload(dev); vbox_driver_unload(dev);
err_vbox_driver_load: err_vbox_driver_load:
pci_disable_device(pdev);
err_pci_enable:
drm_dev_put(dev); drm_dev_put(dev);
err_drv_alloc: err_drv_alloc:
return ret; return ret;
......
...@@ -323,6 +323,11 @@ static int vbox_crtc_page_flip(struct drm_crtc *crtc, ...@@ -323,6 +323,11 @@ static int vbox_crtc_page_flip(struct drm_crtc *crtc,
if (rc) if (rc)
return rc; return rc;
mutex_lock(&vbox->hw_mutex);
vbox_set_view(crtc);
vbox_do_modeset(crtc, &crtc->mode);
mutex_unlock(&vbox->hw_mutex);
spin_lock_irqsave(&drm->event_lock, flags); spin_lock_irqsave(&drm->event_lock, flags);
if (event) if (event)
......
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_WILC1000) += wilc1000.o
ccflags-y += -DFIRMWARE_1002=\"atmel/wilc1002_firmware.bin\" \ ccflags-y += -DFIRMWARE_1002=\"atmel/wilc1002_firmware.bin\" \
-DFIRMWARE_1003=\"atmel/wilc1003_firmware.bin\" -DFIRMWARE_1003=\"atmel/wilc1003_firmware.bin\"
...@@ -11,9 +12,7 @@ wilc1000-objs := wilc_wfi_cfgoperations.o linux_wlan.o linux_mon.o \ ...@@ -11,9 +12,7 @@ wilc1000-objs := wilc_wfi_cfgoperations.o linux_wlan.o linux_mon.o \
wilc_wlan.o wilc_wlan.o
obj-$(CONFIG_WILC1000_SDIO) += wilc1000-sdio.o obj-$(CONFIG_WILC1000_SDIO) += wilc1000-sdio.o
wilc1000-sdio-objs += $(wilc1000-objs)
wilc1000-sdio-objs += wilc_sdio.o wilc1000-sdio-objs += wilc_sdio.o
obj-$(CONFIG_WILC1000_SPI) += wilc1000-spi.o obj-$(CONFIG_WILC1000_SPI) += wilc1000-spi.o
wilc1000-spi-objs += $(wilc1000-objs)
wilc1000-spi-objs += wilc_spi.o wilc1000-spi-objs += wilc_spi.o
...@@ -1038,8 +1038,8 @@ void wilc_netdev_cleanup(struct wilc *wilc) ...@@ -1038,8 +1038,8 @@ void wilc_netdev_cleanup(struct wilc *wilc)
} }
kfree(wilc); kfree(wilc);
wilc_debugfs_remove();
} }
EXPORT_SYMBOL_GPL(wilc_netdev_cleanup);
static const struct net_device_ops wilc_netdev_ops = { static const struct net_device_ops wilc_netdev_ops = {
.ndo_init = mac_init_fn, .ndo_init = mac_init_fn,
...@@ -1062,7 +1062,6 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type, ...@@ -1062,7 +1062,6 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
if (!wl) if (!wl)
return -ENOMEM; return -ENOMEM;
wilc_debugfs_init();
*wilc = wl; *wilc = wl;
wl->io_type = io_type; wl->io_type = io_type;
wl->hif_func = ops; wl->hif_func = ops;
...@@ -1124,3 +1123,6 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type, ...@@ -1124,3 +1123,6 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(wilc_netdev_init);
MODULE_LICENSE("GPL");
...@@ -19,6 +19,7 @@ static struct dentry *wilc_dir; ...@@ -19,6 +19,7 @@ static struct dentry *wilc_dir;
#define DBG_LEVEL_ALL (DEBUG | INFO | WRN | ERR) #define DBG_LEVEL_ALL (DEBUG | INFO | WRN | ERR)
static atomic_t WILC_DEBUG_LEVEL = ATOMIC_INIT(ERR); static atomic_t WILC_DEBUG_LEVEL = ATOMIC_INIT(ERR);
EXPORT_SYMBOL_GPL(WILC_DEBUG_LEVEL);
static ssize_t wilc_debug_level_read(struct file *file, char __user *userbuf, static ssize_t wilc_debug_level_read(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
...@@ -87,7 +88,7 @@ static struct wilc_debugfs_info_t debugfs_info[] = { ...@@ -87,7 +88,7 @@ static struct wilc_debugfs_info_t debugfs_info[] = {
}, },
}; };
int wilc_debugfs_init(void) static int __init wilc_debugfs_init(void)
{ {
int i; int i;
struct wilc_debugfs_info_t *info; struct wilc_debugfs_info_t *info;
...@@ -103,10 +104,12 @@ int wilc_debugfs_init(void) ...@@ -103,10 +104,12 @@ int wilc_debugfs_init(void)
} }
return 0; return 0;
} }
module_init(wilc_debugfs_init);
void wilc_debugfs_remove(void) static void __exit wilc_debugfs_remove(void)
{ {
debugfs_remove_recursive(wilc_dir); debugfs_remove_recursive(wilc_dir);
} }
module_exit(wilc_debugfs_remove);
#endif #endif
...@@ -417,6 +417,7 @@ void chip_allow_sleep(struct wilc *wilc) ...@@ -417,6 +417,7 @@ void chip_allow_sleep(struct wilc *wilc)
wilc->hif_func->hif_write_reg(wilc, 0xf0, reg & ~BIT(0)); wilc->hif_func->hif_write_reg(wilc, 0xf0, reg & ~BIT(0));
wilc->hif_func->hif_write_reg(wilc, 0xfa, 0); wilc->hif_func->hif_write_reg(wilc, 0xfa, 0);
} }
EXPORT_SYMBOL_GPL(chip_allow_sleep);
void chip_wakeup(struct wilc *wilc) void chip_wakeup(struct wilc *wilc)
{ {
...@@ -471,6 +472,7 @@ void chip_wakeup(struct wilc *wilc) ...@@ -471,6 +472,7 @@ void chip_wakeup(struct wilc *wilc)
} }
chip_ps_state = CHIP_WAKEDUP; chip_ps_state = CHIP_WAKEDUP;
} }
EXPORT_SYMBOL_GPL(chip_wakeup);
void wilc_chip_sleep_manually(struct wilc *wilc) void wilc_chip_sleep_manually(struct wilc *wilc)
{ {
...@@ -484,6 +486,7 @@ void wilc_chip_sleep_manually(struct wilc *wilc) ...@@ -484,6 +486,7 @@ void wilc_chip_sleep_manually(struct wilc *wilc)
chip_ps_state = CHIP_SLEEPING_MANUAL; chip_ps_state = CHIP_SLEEPING_MANUAL;
release_bus(wilc, RELEASE_ONLY); release_bus(wilc, RELEASE_ONLY);
} }
EXPORT_SYMBOL_GPL(wilc_chip_sleep_manually);
void host_wakeup_notify(struct wilc *wilc) void host_wakeup_notify(struct wilc *wilc)
{ {
...@@ -491,6 +494,7 @@ void host_wakeup_notify(struct wilc *wilc) ...@@ -491,6 +494,7 @@ void host_wakeup_notify(struct wilc *wilc)
wilc->hif_func->hif_write_reg(wilc, 0x10b0, 1); wilc->hif_func->hif_write_reg(wilc, 0x10b0, 1);
release_bus(wilc, RELEASE_ONLY); release_bus(wilc, RELEASE_ONLY);
} }
EXPORT_SYMBOL_GPL(host_wakeup_notify);
void host_sleep_notify(struct wilc *wilc) void host_sleep_notify(struct wilc *wilc)
{ {
...@@ -498,6 +502,7 @@ void host_sleep_notify(struct wilc *wilc) ...@@ -498,6 +502,7 @@ void host_sleep_notify(struct wilc *wilc)
wilc->hif_func->hif_write_reg(wilc, 0x10ac, 1); wilc->hif_func->hif_write_reg(wilc, 0x10ac, 1);
release_bus(wilc, RELEASE_ONLY); release_bus(wilc, RELEASE_ONLY);
} }
EXPORT_SYMBOL_GPL(host_sleep_notify);
int wilc_wlan_handle_txq(struct net_device *dev, u32 *txq_count) int wilc_wlan_handle_txq(struct net_device *dev, u32 *txq_count)
{ {
...@@ -871,6 +876,7 @@ void wilc_handle_isr(struct wilc *wilc) ...@@ -871,6 +876,7 @@ void wilc_handle_isr(struct wilc *wilc)
release_bus(wilc, RELEASE_ALLOW_SLEEP); release_bus(wilc, RELEASE_ALLOW_SLEEP);
} }
EXPORT_SYMBOL_GPL(wilc_handle_isr);
int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer, int wilc_wlan_firmware_download(struct wilc *wilc, const u8 *buffer,
u32 buffer_size) u32 buffer_size)
......
...@@ -831,6 +831,4 @@ struct wilc; ...@@ -831,6 +831,4 @@ struct wilc;
int wilc_wlan_init(struct net_device *dev); int wilc_wlan_init(struct net_device *dev);
u32 wilc_get_chipid(struct wilc *wilc, bool update); u32 wilc_get_chipid(struct wilc *wilc, bool update);
int wilc_debugfs_init(void);
void wilc_debugfs_remove(void);
#endif #endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册