16 May, 2019

1 commit

  • Pull ARM SoC platform updates from Olof Johansson:
    "SoC updates, mostly refactorings and cleanups of old legacy platforms.

    Major themes this release:

    - Conversion of ixp4xx to a modern platform (drivers, DT, bindings)

    - Moving some of the ep93xx headers around to get it closer to
    multiplatform enabled.

    - Cleanups of Davinci

    This also contains a few patches that were queued up as fixes before
    5.1 but I didn't get sent in before release"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (123 commits)
    ARM: debug-ll: add default address for digicolor
    ARM: u300: regulator: add MODULE_LICENSE()
    ARM: ep93xx: move private headers out of mach/*
    ARM: ep93xx: move pinctrl interfaces into include/linux/soc
    ARM: ep93xx: keypad: stop using mach/platform.h
    ARM: ep93xx: move network platform data to separate header
    ARM: stm32: add AMBA support for stm32 family
    MAINTAINERS: update arch/arm/mach-davinci
    ARM: rockchip: add missing of_node_put in rockchip_smp_prepare_pmu
    ARM: dts: Add queue manager and NPE to the IXP4xx DTSI
    soc: ixp4xx: qmgr: Add DT probe code
    soc: ixp4xx: qmgr: Add DT bindings for IXP4xx qmgr
    soc: ixp4xx: npe: Add DT probe code
    soc: ixp4xx: Add DT bindings for IXP4xx NPE
    soc: ixp4xx: qmgr: Pass resources
    soc: ixp4xx: Remove unused functions
    soc: ixp4xx: Uninline several functions
    soc: ixp4xx: npe: Pass addresses as resources
    ARM: ixp4xx: Turn the QMGR into a platform device
    ARM: ixp4xx: Turn the NPE into a platform device
    ...

    Linus Torvalds
     

15 May, 2019

1 commit

  • Pull backlight updates from Lee Jones:
    "Fix-ups:
    - Remove unused BACKLIGHT_LCD_SUPPORT symbol
    - Remove unused BACKLIGHT_CLASS_DEVICE dependencies
    - Add DT support to lm3630a_bl

    Bug Fixes:
    - Fix error path issues in lm3630a_bl"

    * tag 'backlight-next-5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/backlight:
    backlight: lm3630a: Add firmware node support
    dt-bindings: backlight: Add lm3630a bindings
    backlight: lm3630a: Return 0 on success in update_status functions
    video: lcd: Remove useless BACKLIGHT_CLASS_DEVICE dependencies
    video: backlight: Remove useless BACKLIGHT_LCD_SUPPORT kernel symbol

    Linus Torvalds
     

09 May, 2019

2 commits

  • Pull drm updates from Dave Airlie:
    "This has two exciting community drivers for ARM Mali accelerators.
    Since ARM has never been open source friendly on the GPU side of the
    house, the community has had to create open source drivers for the
    Mali GPUs. Lima covers the older t4xx and panfrost the newer 6xx/7xx
    series. Well done to all involved and hopefully this will help ARM
    head in the right direction.

    There is also now the ability if you don't have any of the legacy
    drivers enabled (pre-KMS) to remove all the pre-KMS support code from
    the core drm, this saves 10% or so in codesize on my machine.

    i915 also enable Icelake/Elkhart Lake Gen11 GPUs by default, vboxvideo
    moves out of staging.

    There are also some rcar-du patches which crossover with media tree
    but all should be acked by Mauro.

    Summary:

    uapi changes:
    - Colorspace connector property
    - fourcc - new YUV formts
    - timeline sync objects initially merged
    - expose FB_DAMAGE_CLIPS to atomic userspace

    new drivers:
    - vboxvideo: moved out of staging
    - aspeed: ASPEED SoC BMC chip display support
    - lima: ARM Mali4xx GPU acceleration driver support
    - panfrost: ARM Mali6xx/7xx Midgard/Bitfrost acceleration driver support

    core:
    - component helper docs
    - unplugging fixes
    - devm device init
    - MIPI/DSI rate control
    - shmem backed gem objects
    - connector, display_info, edid_quirks cleanups
    - dma_buf fence chain support
    - 64-bit dma-fence seqno comparison fixes
    - move initial fb config code to core
    - gem fence array helpers for Lima
    - ability to remove legacy support code if no drivers requires it (removes 10% of drm.ko size)
    - lease fixes

    ttm:
    - unified DRM_FILE_PAGE_OFFSET handling
    - Account for kernel allocations in kernel zone only

    panel:
    - OSD070T1718-19TS panel support
    - panel-tpo-td028ttec1 backlight support
    - Ronbo RB070D30 MIPI/DSI
    - Feiyang FY07024DI26A30-D MIPI-DSI panel
    - Rocktech jh057n00900 MIPI-DSI panel

    i915:
    - Comet Lake (Gen9) PCI IDs
    - Updated Icelake PCI IDs
    - Elkhartlake (Gen11) support
    - DP MST property addtions
    - plane and watermark fixes
    - Icelake port sync and VEBOX disable fixes
    - struct_mutex usage reduction
    - Icelake gamma fix
    - GuC reset fixes
    - make mmap more asynchronous
    - sound display power well race fixes
    - DDI/MIPI-DSI clocks for Icelake
    - Icelake RPS frequency changing support
    - Icelake workarounds

    amdgpu:
    - Use HMM for userptr
    - vega20 experimental smu11 support
    - RAS support for vega20
    - BACO support for vega12 + fixes for vega20
    - reworked IH interrupt handling
    - amdkfd RAS support
    - Freesync improvements
    - initial timeline sync object support
    - DC Z ordering fixes
    - NV12 planes support
    - colorspace properties for planes=
    - eDP opts if eDP already initialized

    nouveau:
    - misc fixes

    etnaviv:
    - misc fixes

    msm:
    - GPU zap shader support expansion
    - robustness ABI addition

    exynos:
    - Logging cleanups

    tegra:
    - Shared reset fix
    - CPU cache maintenance fix

    cirrus:
    - driver rewritten using simple helpers

    meson:
    - G12A support

    vmwgfx:
    - Resource dirtying management improvements
    - Userspace logging improvements

    virtio:
    - PRIME fixes

    rockchip:
    - rk3066 hdmi support

    sun4i:
    - DSI burst mode support

    vc4:
    - load tracker to detect underflow

    v3d:
    - v3d v4.2 support

    malidp:
    - initial Mali D71 support in komeda driver

    tfp410:
    - omap related improvement

    omapdrm:
    - drm bridge/panel support
    - drop some omap specific panels

    rcar-du:
    - Display writeback support"

    * tag 'drm-next-2019-05-09' of git://anongit.freedesktop.org/drm/drm: (1507 commits)
    drm/msm/a6xx: No zap shader is not an error
    drm/cma-helper: Fix drm_gem_cma_free_object()
    drm: Fix timestamp docs for variable refresh properties.
    drm/komeda: Mark the local functions as static
    drm/komeda: Fixed warning: Function parameter or member not described
    drm/komeda: Expose bus_width to Komeda-CORE
    drm/komeda: Add sysfs attribute: core_id and config_id
    drm: add non-desktop quirk for Valve HMDs
    drm/panfrost: Show stored feature registers
    drm/panfrost: Don't scream about deferred probe
    drm/panfrost: Disable PM on probe failure
    drm/panfrost: Set DMA masks earlier
    drm/panfrost: Add sanity checks to submit IOCTL
    drm/etnaviv: initialize idle mask before querying the HW db
    drm: introduce a capability flag for syncobj timeline support
    drm: report consistent errors when checking syncobj capibility
    drm/nouveau/nouveau: forward error generated while resuming objects tree
    drm/nouveau/fb/ramgk104: fix spelling mistake "sucessfully" -> "successfully"
    drm/nouveau/i2c: Disable i2c bus access after ->fini()
    drm/nouveau: Remove duplicate ACPI_VIDEO_NOTIFY_PROBE definition
    ...

    Linus Torvalds
     
  • Pull USB/PHY updates from Greg KH:
    "Here is the big set of USB and PHY driver patches for 5.2-rc1

    There is the usual set of:

    - USB gadget updates

    - PHY driver updates and additions

    - USB serial driver updates and fixes

    - typec updates and new chips supported

    - mtu3 driver updates

    - xhci driver updates

    - other tiny driver updates

    Nothing really interesting, just constant forward progress.

    All of these have been in linux-next for a while with no reported
    issues. The usb-gadget and usb-serial trees were merged a bit "late",
    but both of them had been in linux-next before they got merged here
    last Friday"

    * tag 'usb-5.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (206 commits)
    USB: serial: f81232: implement break control
    USB: serial: f81232: add high baud rate support
    USB: serial: f81232: clear overrun flag
    USB: serial: f81232: fix interrupt worker not stop
    usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA
    usb: dwc3: Fix default lpm_nyet_threshold value
    usb: dwc3: debug: Print GET_STATUS(device) tracepoint
    usb: dwc3: Do core validation early on probe
    usb: dwc3: gadget: Set lpm_capable
    usb: gadget: atmel: tie wake lock to running clock
    usb: gadget: atmel: support USB suspend
    usb: gadget: atmel_usba_udc: simplify setting of interrupt-enabled mask
    dwc2: gadget: Fix completed transfer size calculation in DDMA
    usb: dwc2: Set lpm mode parameters depend on HW configuration
    usb: dwc2: Fix channel disable flow
    usb: dwc2: Set actual frame number for completed ISOC transfer
    usb: gadget: do not use __constant_cpu_to_le16
    usb: dwc2: gadget: Increase descriptors count for ISOC's
    usb: introduce usb_ep_type_string() function
    usb: dwc3: move synchronize_irq() out of the spinlock protected block
    ...

    Linus Torvalds
     

08 May, 2019

1 commit

  • Pull stream_open conversion from Kirill Smelkov:

    - remove unnecessary double nonseekable_open from drivers/char/dtlk.c
    as noticed by Pavel Machek while reviewing nonseekable_open ->
    stream_open mass conversion.

    - the mass conversion patch promised in commit 10dce8af3422 ("fs:
    stream_open - opener for stream-like files so that read and write can
    run simultaneously without deadlock") and is automatically generated
    by running

    $ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/stream_open.cocci

    I've verified each generated change manually - that it is correct to
    convert - and each other nonseekable_open instance left - that it is
    either not correct to convert there, or that it is not converted due
    to current stream_open.cocci limitations. More details on this in the
    patch.

    - finally, change VFS to pass ppos=NULL into .read/.write for files
    that declare themselves streams. It was suggested by Rasmus Villemoes
    and makes sure that if ppos starts to be erroneously used in a stream
    file, such bug won't go unnoticed and will produce an oops instead of
    creating illusion of position change being taken into account.

    Note: this patch does not conflict with "fuse: Add FOPEN_STREAM to
    use stream_open()" that will be hopefully coming via FUSE tree,
    because fs/fuse/ uses new-style .read_iter/.write_iter, and for these
    accessors position is still passed as non-pointer kiocb.ki_pos .

    * tag 'stream_open-5.2' of https://lab.nexedi.com/kirr/linux:
    vfs: pass ppos=NULL to .read()/.write() of FMODE_STREAM files
    *: convert stream-like files from nonseekable_open -> stream_open
    dtlk: remove double call to nonseekable_open

    Linus Torvalds
     

07 May, 2019

1 commit

  • Pull mmiowb removal from Will Deacon:
    "Remove Mysterious Macro Intended to Obscure Weird Behaviours (mmiowb())

    Remove mmiowb() from the kernel memory barrier API and instead, for
    architectures that need it, hide the barrier inside spin_unlock() when
    MMIO has been performed inside the critical section.

    The only relatively recent changes have been addressing review
    comments on the documentation, which is in a much better shape thanks
    to the efforts of Ben and Ingo.

    I was initially planning to split this into two pull requests so that
    you could run the coccinelle script yourself, however it's been plain
    sailing in linux-next so I've just included the whole lot here to keep
    things simple"

    * tag 'arm64-mmiowb' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux: (23 commits)
    docs/memory-barriers.txt: Update I/O section to be clearer about CPU vs thread
    docs/memory-barriers.txt: Fix style, spacing and grammar in I/O section
    arch: Remove dummy mmiowb() definitions from arch code
    net/ethernet/silan/sc92031: Remove stale comment about mmiowb()
    i40iw: Redefine i40iw_mmiowb() to do nothing
    scsi/qla1280: Remove stale comment about mmiowb()
    drivers: Remove explicit invocations of mmiowb()
    drivers: Remove useless trailing comments from mmiowb() invocations
    Documentation: Kill all references to mmiowb()
    riscv/mmiowb: Hook up mmwiob() implementation to asm-generic code
    powerpc/mmiowb: Hook up mmwiob() implementation to asm-generic code
    ia64/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    mips/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    sh/mmiowb: Add unconditional mmiowb() to arch_spin_unlock()
    m68k/io: Remove useless definition of mmiowb()
    nds32/io: Remove useless definition of mmiowb()
    x86/io: Remove useless definition of mmiowb()
    arm64/io: Remove useless definition of mmiowb()
    ARM/io: Remove useless definition of mmiowb()
    mmiowb: Hook up mmiowb helpers to spinlocks and generic I/O accessors
    ...

    Linus Torvalds
     

06 May, 2019

1 commit

  • Using scripts/coccinelle/api/stream_open.cocci added in 10dce8af3422
    ("fs: stream_open - opener for stream-like files so that read and write
    can run simultaneously without deadlock"), search and convert to
    stream_open all in-kernel nonseekable_open users for which read and
    write actually do not depend on ppos and where there is no other methods
    in file_operations which assume @offset access.

    I've verified each generated change manually - that it is correct to convert -
    and each other nonseekable_open instance left - that it is either not correct
    to convert there, or that it is not converted due to current stream_open.cocci
    limitations. The script also does not convert files that should be valid to
    convert, but that currently have .llseek = noop_llseek or generic_file_llseek
    for unknown reason despite file being opened with nonseekable_open (e.g.
    drivers/input/mousedev.c)

    Among cases converted 14 were potentially vulnerable to read vs write deadlock
    (see details in 10dce8af3422):

    drivers/char/pcmcia/cm4000_cs.c:1685:7-23: ERROR: cm4000_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/gnss/core.c:45:1-17: ERROR: gnss_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/hid/uhid.c:635:1-17: ERROR: uhid_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/infiniband/core/user_mad.c:988:1-17: ERROR: umad_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/input/evdev.c:527:1-17: ERROR: evdev_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/input/misc/uinput.c:401:1-17: ERROR: uinput_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/isdn/capi/capi.c:963:8-24: ERROR: capi_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/leds/uleds.c:77:1-17: ERROR: uleds_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/media/rc/lirc_dev.c:198:1-17: ERROR: lirc_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/s390/char/fs3270.c:488:1-17: ERROR: fs3270_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/usb/misc/ldusb.c:310:1-17: ERROR: ld_usb_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    drivers/xen/evtchn.c:667:8-24: ERROR: evtchn_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    net/batman-adv/icmp_socket.c:80:1-17: ERROR: batadv_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.
    net/rfkill/core.c:1146:8-24: ERROR: rfkill_fops: .read() can deadlock .write(); change nonseekable_open -> stream_open to fix.

    and the rest were just safe to convert to stream_open because their read and
    write do not use ppos at all and corresponding file_operations do not
    have methods that assume @offset file access(*):

    arch/powerpc/platforms/52xx/mpc52xx_gpt.c:631:8-24: WARNING: mpc52xx_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_ibox_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_ibox_stat_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_mbox_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_mbox_stat_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_wbox_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/powerpc/platforms/cell/spufs/file.c:591:8-24: WARNING: spufs_wbox_stat_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/um/drivers/harddog_kern.c:88:8-24: WARNING: harddog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    arch/x86/kernel/cpu/microcode/core.c:430:33-49: WARNING: microcode_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/char/ds1620.c:215:8-24: WARNING: ds1620_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/char/dtlk.c:301:1-17: WARNING: dtlk_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/char/ipmi/ipmi_watchdog.c:840:9-25: WARNING: ipmi_wdog_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/char/pcmcia/scr24x_cs.c:95:8-24: WARNING: scr24x_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/char/tb0219.c:246:9-25: WARNING: tb0219_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/firewire/nosy.c:306:8-24: WARNING: nosy_ops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/hwmon/fschmd.c:840:8-24: WARNING: watchdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/hwmon/w83793.c:1344:8-24: WARNING: watchdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/infiniband/core/ucma.c:1747:8-24: WARNING: ucma_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/infiniband/core/ucm.c:1178:8-24: WARNING: ucm_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/infiniband/core/uverbs_main.c:1086:8-24: WARNING: uverbs_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/input/joydev.c:282:1-17: WARNING: joydev_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/pci/switch/switchtec.c:393:1-17: WARNING: switchtec_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/platform/chrome/cros_ec_debugfs.c:135:8-24: WARNING: cros_ec_console_log_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/rtc/rtc-ds1374.c:470:9-25: WARNING: ds1374_wdt_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/rtc/rtc-m41t80.c:805:9-25: WARNING: wdt_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/s390/char/tape_char.c:293:2-18: WARNING: tape_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/s390/char/zcore.c:194:8-24: WARNING: zcore_reipl_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/s390/crypto/zcrypt_api.c:528:8-24: WARNING: zcrypt_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/spi/spidev.c:594:1-17: WARNING: spidev_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/staging/pi433/pi433_if.c:974:1-17: WARNING: pi433_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/acquirewdt.c:203:8-24: WARNING: acq_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/advantechwdt.c:202:8-24: WARNING: advwdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/alim1535_wdt.c:252:8-24: WARNING: ali_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/alim7101_wdt.c:217:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ar7_wdt.c:166:8-24: WARNING: ar7_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/at91rm9200_wdt.c:113:8-24: WARNING: at91wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ath79_wdt.c:135:8-24: WARNING: ath79_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/bcm63xx_wdt.c:119:8-24: WARNING: bcm63xx_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/cpu5wdt.c:143:8-24: WARNING: cpu5wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/cpwd.c:397:8-24: WARNING: cpwd_fops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/eurotechwdt.c:319:8-24: WARNING: eurwdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/f71808e_wdt.c:528:8-24: WARNING: watchdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/gef_wdt.c:232:8-24: WARNING: gef_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/geodewdt.c:95:8-24: WARNING: geodewdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ib700wdt.c:241:8-24: WARNING: ibwdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ibmasr.c:326:8-24: WARNING: asr_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/indydog.c:80:8-24: WARNING: indydog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/intel_scu_watchdog.c:307:8-24: WARNING: intel_scu_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/iop_wdt.c:104:8-24: WARNING: iop_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/it8712f_wdt.c:330:8-24: WARNING: it8712f_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ixp4xx_wdt.c:68:8-24: WARNING: ixp4xx_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/ks8695_wdt.c:145:8-24: WARNING: ks8695wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/m54xx_wdt.c:88:8-24: WARNING: m54xx_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/machzwd.c:336:8-24: WARNING: zf_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/mixcomwd.c:153:8-24: WARNING: mixcomwd_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/mtx-1_wdt.c:121:8-24: WARNING: mtx1_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/mv64x60_wdt.c:136:8-24: WARNING: mv64x60_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/nuc900_wdt.c:134:8-24: WARNING: nuc900wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/nv_tco.c:164:8-24: WARNING: nv_tco_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pc87413_wdt.c:289:8-24: WARNING: pc87413_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd.c:698:8-24: WARNING: pcwd_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd.c:737:8-24: WARNING: pcwd_temp_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd_pci.c:581:8-24: WARNING: pcipcwd_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd_pci.c:623:8-24: WARNING: pcipcwd_temp_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd_usb.c:488:8-24: WARNING: usb_pcwd_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pcwd_usb.c:527:8-24: WARNING: usb_pcwd_temperature_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pika_wdt.c:121:8-24: WARNING: pikawdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/pnx833x_wdt.c:119:8-24: WARNING: pnx833x_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/rc32434_wdt.c:153:8-24: WARNING: rc32434_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/rdc321x_wdt.c:145:8-24: WARNING: rdc321x_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/riowd.c:79:1-17: WARNING: riowd_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sa1100_wdt.c:62:8-24: WARNING: sa1100dog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sbc60xxwdt.c:211:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sbc7240_wdt.c:139:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sbc8360.c:274:8-24: WARNING: sbc8360_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sbc_epx_c3.c:81:8-24: WARNING: epx_c3_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sbc_fitpc2_wdt.c:78:8-24: WARNING: fitpc2_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sb_wdog.c:108:1-17: WARNING: sbwdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sc1200wdt.c:181:8-24: WARNING: sc1200wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sc520_wdt.c:261:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/sch311x_wdt.c:319:8-24: WARNING: sch311x_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/scx200_wdt.c:105:8-24: WARNING: scx200_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/smsc37b787_wdt.c:369:8-24: WARNING: wb_smsc_wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/w83877f_wdt.c:227:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/w83977f_wdt.c:301:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wafer5823wdt.c:200:8-24: WARNING: wafwdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/watchdog_dev.c:828:8-24: WARNING: watchdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdrtas.c:379:8-24: WARNING: wdrtas_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdrtas.c:445:8-24: WARNING: wdrtas_temp_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt285.c:104:1-17: WARNING: watchdog_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt977.c:276:8-24: WARNING: wdt977_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt.c:424:8-24: WARNING: wdt_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt.c:484:8-24: WARNING: wdt_temp_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt_pci.c:464:8-24: WARNING: wdtpci_fops: .write() has stream semantic; safe to change nonseekable_open -> stream_open.
    drivers/watchdog/wdt_pci.c:527:8-24: WARNING: wdtpci_temp_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    net/batman-adv/log.c:105:1-17: WARNING: batadv_log_fops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    sound/core/control.c:57:7-23: WARNING: snd_ctl_f_ops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.
    sound/core/rawmidi.c:385:7-23: WARNING: snd_rawmidi_f_ops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    sound/core/seq/seq_clientmgr.c:310:7-23: WARNING: snd_seq_f_ops: .read() and .write() have stream semantic; safe to change nonseekable_open -> stream_open.
    sound/core/timer.c:1428:7-23: WARNING: snd_timer_f_ops: .read() has stream semantic; safe to change nonseekable_open -> stream_open.

    One can also recheck/review the patch via generating it with explanation comments included via

    $ make coccicheck MODE=patch COCCI=scripts/coccinelle/api/stream_open.cocci SPFLAGS="-D explain"

    (*) This second group also contains cases with read/write deadlocks that
    stream_open.cocci don't yet detect, but which are still valid to convert to
    stream_open since ppos is not used. For example drivers/pci/switch/switchtec.c
    calls wait_for_completion_interruptible() in its .read, but stream_open.cocci
    currently detects only "wait_event*" as blocking.

    Cc: Michael Kerrisk
    Cc: Yongzhi Pan
    Cc: Jonathan Corbet
    Cc: David Vrabel
    Cc: Juergen Gross
    Cc: Miklos Szeredi
    Cc: Tejun Heo
    Cc: Kirill Tkhai
    Cc: Arnd Bergmann
    Cc: Christoph Hellwig
    Cc: Greg Kroah-Hartman
    Cc: Julia Lawall
    Cc: Nikolaus Rath
    Cc: Han-Wen Nienhuys
    Cc: Anatolij Gustschin
    Cc: Jeff Dike
    Cc: Richard Weinberger
    Cc: Anton Ivanov
    Cc: Borislav Petkov
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "James R. Van Zandt"
    Cc: Corey Minyard
    Cc: Harald Welte
    Acked-by: Lubomir Rintel [scr24x_cs]
    Cc: Stefan Richter
    Cc: Johan Hovold
    Cc: David Herrmann
    Cc: Jiri Kosina
    Cc: Benjamin Tissoires
    Cc: Jean Delvare
    Acked-by: Guenter Roeck [watchdog/* hwmon/*]
    Cc: Rudolf Marek
    Cc: Dmitry Torokhov
    Cc: Karsten Keil
    Cc: Jacek Anaszewski
    Cc: Pavel Machek
    Cc: Mauro Carvalho Chehab
    Cc: Kurt Schwemmer
    Acked-by: Logan Gunthorpe [drivers/pci/switch/switchtec]
    Acked-by: Bjorn Helgaas [drivers/pci/switch/switchtec]
    Cc: Benson Leung
    Acked-by: Enric Balletbo i Serra [platform/chrome]
    Cc: Alessandro Zummo
    Acked-by: Alexandre Belloni [rtc/*]
    Cc: Mark Brown
    Cc: Wim Van Sebroeck
    Cc: Florian Fainelli
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Wan ZongShun
    Cc: Zwane Mwaikambo
    Cc: Marek Lindner
    Cc: Simon Wunderlich
    Cc: Antonio Quartulli
    Cc: "David S. Miller"
    Cc: Johannes Berg
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Signed-off-by: Kirill Smelkov

    Kirill Smelkov
     

04 May, 2019

2 commits

  • Felipe writes:

    USB: changes for v5.2 merge window

    With a total of 50 non-merge commits, this is not a large pull
    request. Most of the changes are, again, in dwc2 (37%) and dwc3 (32%)
    with the rest of it scattered among other UDCs, function drivers and
    device-tree bindings.

    No really big feature this time around apart from support to Amlogic
    being added to both dwc3 and dwc2 drivers.

    * tag 'usb-for-v5.2' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb: (50 commits)
    usb: dwc3: Rename DWC3_DCTL_LPM_ERRATA
    usb: dwc3: Fix default lpm_nyet_threshold value
    usb: dwc3: debug: Print GET_STATUS(device) tracepoint
    usb: dwc3: Do core validation early on probe
    usb: dwc3: gadget: Set lpm_capable
    usb: gadget: atmel: tie wake lock to running clock
    usb: gadget: atmel: support USB suspend
    usb: gadget: atmel_usba_udc: simplify setting of interrupt-enabled mask
    dwc2: gadget: Fix completed transfer size calculation in DDMA
    usb: dwc2: Set lpm mode parameters depend on HW configuration
    usb: dwc2: Fix channel disable flow
    usb: dwc2: Set actual frame number for completed ISOC transfer
    usb: gadget: do not use __constant_cpu_to_le16
    usb: dwc2: gadget: Increase descriptors count for ISOC's
    usb: introduce usb_ep_type_string() function
    usb: dwc3: move synchronize_irq() out of the spinlock protected block
    usb: dwc3: Free resource immediately after use
    usb: dwc3: of-simple: Convert to bulk clk API
    usb: dwc2: Delayed status support
    usb: gadget: udc: lpc32xx: rework interrupt handling
    ...

    Greg Kroah-Hartman
     
  • …t/johan/usb-serial into usb-next

    Johan writes:

    USB-serial updates for 5.2-rc1

    Here are the USB-serial updates for 5.2-rc1, including:

    - flow-control related fixes for pl2303
    - fix for an initial-termios issue
    - fix for a couple of unthrottle() races
    - fix for f81232 interrupt-handling issues
    - improved f81232 overrun handling
    - support for higher f81232 line speeds
    - support for f81232 break control

    Included are also various clean ups.

    All but the last four commits have been in linux-next and with no
    reported issues.

    Signed-off-by: Johan Hovold <johan@kernel.org>

    * tag 'usb-serial-5.2-rc1' of https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial: (22 commits)
    USB: serial: f81232: implement break control
    USB: serial: f81232: add high baud rate support
    USB: serial: f81232: clear overrun flag
    USB: serial: f81232: fix interrupt worker not stop
    USB: serial: io_edgeport: fix up switch fall-through comments
    USB: serial: drop unused iflag macro
    USB: serial: drop unnecessary goto
    USB: serial: clean up throttle handling
    USB: serial: fix unthrottle races
    USB: serial: spcp8x5: simplify init_termios
    USB: serial: oti6858: simplify init_termios
    USB: serial: iuu_phoenix: simplify init_termios
    USB: serial: iuu_phoenix: drop bogus initial cflag
    USB: serial: cypress_m8: clean up initial-termios handling
    USB: serial: cypress_m8: drop unused termios
    USB: serial: cypress_m8: drop unused driver data flag
    USB: serial: ark3116: drop redundant init_termios
    USB: serial: fix initial-termios handling
    USB: serial: digi_acceleport: clean up set_termios
    USB: serial: digi_acceleport: clean up modem-control handling
    ...

    Greg Kroah-Hartman
     

03 May, 2019

31 commits

  • Implement Fintek F81232 break on/off with LCR register.
    It's the same with 16550A LCR register layout.

    Signed-off-by: Ji-Ze Hong (Peter Hong)
    [ johan: fix corrupt line settings on break due to missing shadow_lcr
    update in set_termios() ]
    Signed-off-by: Johan Hovold

    Ji-Ze Hong (Peter Hong)
     
  • The F81232 had 4 clocksource 1.846/18.46/14.77/24MHz and baud rates
    can be up to 1.5Mbits with 24MHz.

    F81232 Clock registers (106h)

    Bit1-0: Clock source selector
    00: 1.846MHz.
    01: 18.46MHz.
    10: 24MHz.
    11: 14.77MHz.

    Signed-off-by: Ji-Ze Hong (Peter Hong)
    Signed-off-by: Johan Hovold

    Ji-Ze Hong (Peter Hong)
     
  • The F81232 will report data and LSR with bulk like following format:
    bulk-in data: [LSR(1Byte)+DATA(1Byte)][LSR(1Byte)+DATA(1Byte)]...

    LSR will auto clear frame/parity/break error flag when reading by H/W,
    but overrrun will only cleared when reading LSR. So this patch add a
    worker to read LSR when overrun and flush the worker on close() &
    suspend().

    Cc: Oliver Neukum
    Signed-off-by: Ji-Ze Hong (Peter Hong)
    Signed-off-by: Johan Hovold

    Ji-Ze Hong (Peter Hong)
     
  • The F81232 will use interrupt worker to handle MSR change.
    This patch will fix the issue that interrupt work should stop
    in close() and suspend().

    This also fixes line-status events being disabled after a suspend cycle
    until the port is re-opened.

    Signed-off-by: Ji-Ze Hong (Peter Hong)
    [ johan: amend commit message ]
    Fixes: 87fe5adcd8de ("USB: f81232: implement read IIR/MSR with endpoint")
    Cc: stable # 4.1
    Signed-off-by: Johan Hovold

    Ji-Ze Hong (Peter Hong)
     
  • The macro name DWC3_DCTL_LPM_ERRATA is uninformative and does not do
    masking. Remove DWC3_DCTL_LPM_ERRATA_MASK and rename
    DWC3_DCTL_LPM_ERRATA to DWC3_DCTL_NYET_THRES with proper masking.

    Signed-off-by: Thinh Nguyen
    Signed-off-by: Felipe Balbi

    Thinh Nguyen
     
  • The max possible value for DCTL.LPM_NYET_THRES is 15 and not 255. Change
    the default value to 15.

    Cc: stable@vger.kernel.org
    Fixes: 80caf7d21adc ("usb: dwc3: add lpm erratum support")
    Signed-off-by: Thinh Nguyen
    Signed-off-by: Felipe Balbi

    Thinh Nguyen
     
  • DWC3 is missing the printing of control request GET_STATUS(device)
    tracepoint. This patch prints that.

    Signed-off-by: Thinh Nguyen
    Signed-off-by: Felipe Balbi

    Thinh Nguyen
     
  • The setting of the dr_mode may need to check the controller's revision.
    The revision is set in the dwc3_core_is_valid(), which comes after
    dr_mode setting. Let's move it closer to the start of the dwc3_probe()
    function and before calling dwc3_get_dr_mode().

    Signed-off-by: Thinh Nguyen
    Signed-off-by: Felipe Balbi

    Thinh Nguyen
     
  • All DWC3 controllers are LPM capable. Report that in the
    usb_gadget.lpm_capable for the gadget driver to properly output the
    bcdUSB value in the descriptor.

    Signed-off-by: Thinh Nguyen
    Signed-off-by: Felipe Balbi

    Thinh Nguyen
     
  • If the USB device is connected to a host, the CPU cannot be suspended or
    else the USB device appears to be disconnected from the host's point of
    view. Only after a "USB suspend" state has been entered (as set by the
    host) or the host is disconnected can the system safely be suspended: in
    both these states, the clock is stopped. As such, this patch associates
    a "wake lock" with the running clock of the UDC to keep the system awake
    as long as the host maintains the USB connection active.

    Signed-off-by: Jonas Bonn
    CC: Cristian Birsan
    CC: Felipe Balbi
    CC: Greg Kroah-Hartman
    CC: Nicolas Ferre
    CC: Alexandre Belloni
    CC: Ludovic Desroches
    CC: linux-arm-kernel@lists.infradead.org
    CC: linux-usb@vger.kernel.org
    Signed-off-by: Felipe Balbi

    Jonas Bonn
     
  • This patch adds support for USB suspend to the Atmel UDC.

    When suspended, the UDC clock can be stopped, resulting in some power
    savings. The "wake up" interrupt will fire irregardless of whether the
    clock is running or not, allowing the UDC clock to be restarted when the
    USB master wants to wake the device again.

    The IRQ state of this device is somewhat fiddly. The "wake up" IRQ
    seems to actually be a "bus activity" indicator; the IRQ is almost
    continuously asserted so enabling this IRQ should only be done after a
    suspend when the wake IRQ becomes relevant. Similarly, the "suspend"
    IRQ detects "bus inactivity" and may therefore fire together with a
    "wake" if the two types of activity coincide during the period between
    two IRQ handler invocations; therefore, it's important to ignore the
    "suspend" IRQ while waiting for a wake-up.

    This has been tested on a SAMA5D2 board.

    Signed-off-by: Jonas Bonn
    CC: Cristian Birsan
    CC: Felipe Balbi
    CC: Greg Kroah-Hartman
    CC: Nicolas Ferre
    CC: Alexandre Belloni
    CC: Ludovic Desroches
    CC: linux-arm-kernel@lists.infradead.org
    CC: linux-usb@vger.kernel.org
    Signed-off-by: Felipe Balbi

    Jonas Bonn
     
  • This patch adds set and clear functions for enabling/disabling
    interrupts. This simplifies the implementation a bit as the masking of
    previously set bits doesn't need to be so explicit.

    Signed-off-by: Jonas Bonn
    CC: Cristian Birsan
    CC: Felipe Balbi
    CC: Greg Kroah-Hartman
    CC: Nicolas Ferre
    CC: Alexandre Belloni
    CC: Ludovic Desroches
    CC: linux-arm-kernel@lists.infradead.org
    CC: linux-usb@vger.kernel.org
    Signed-off-by: Felipe Balbi

    Jonas Bonn
     
  • Fix calculation of transfer size on completion in function
    dwc2_gadget_get_xfersize_ddma().

    Added increment of descriptor pointer to move to next descriptor in
    the loop.

    Fixes: aa3e8bc81311 ("usb: dwc2: gadget: DDMA transfer start and complete")

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • If core not supported lpm, i.e. BCM2835 then confusing warnings seen
    in log.

    To avoid these warnings, added function dwc2_set_param_lpm() to set
    lpm and other lpm related parameters based on lpm support by core.

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • Channel disabling/halting should performed for enabled only channels
    to avoid warnings "Unable to clear enable on channel N" which seen
    if host works in Slave mode.

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • On ISOC transfer completion, in DDMA mode, set actual frame
    number returning to function driver in usb_request.

    Due to core limitation, returning frame number is 11-bit wide.

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • A trivial patch.

    cpu_to_le16() is capable enough to detect __builtin_constant_p()
    and to use an appropriate compile time ___constant_swahbXX()
    function.

    So we can use cpu_to_le16() instead of __constant_cpu_to_le16().

    Signed-off-by: Sergey Senozhatsky
    Signed-off-by: Felipe Balbi

    Sergey Senozhatsky
     
  • Some function drivers queueing more than 128 ISOC requests at a time.
    To avoid "descriptor chain full" cases, increasing descriptors count
    from MAX_DMA_DESC_NUM_GENERIC to MAX_DMA_DESC_NUM_HS_ISOC for ISOC's
    only.

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • In some places, the code prints a human-readable USB endpoint
    transfer type (e.g. "bulk"). This involves a switch statement
    sometimes wrapped around in ({ ... }) block leading to code
    repetition.
    To make this scenario easier, here introduces usb_ep_type_string()
    function, which returns a human-readable name of provided
    endpoint type.
    It also changes a few places switch was used to use this
    new function.

    Signed-off-by: Chunfeng Yun
    Signed-off-by: Felipe Balbi

    Chunfeng Yun
     
  • dwc3_gadget_suspend() is called under dwc->lock spinlock. In such context
    calling synchronize_irq() is not allowed. Move the problematic call out
    of the protected block to fix the following kernel BUG during system
    suspend:

    BUG: sleeping function called from invalid context at kernel/irq/manage.c:112
    in_atomic(): 1, irqs_disabled(): 128, pid: 1601, name: rtcwake
    6 locks held by rtcwake/1601:
    #0: f70ac2a2 (sb_writers#7){.+.+}, at: vfs_write+0x130/0x16c
    #1: b5fe1270 (&of->mutex){+.+.}, at: kernfs_fop_write+0xc0/0x1e4
    #2: 7e597705 (kn->count#60){.+.+}, at: kernfs_fop_write+0xc8/0x1e4
    #3: 8b3527d0 (system_transition_mutex){+.+.}, at: pm_suspend+0xc4/0xc04
    #4: fc7f1c42 (&dev->mutex){....}, at: __device_suspend+0xd8/0x74c
    #5: 4b36507e (&(&dwc->lock)->rlock){....}, at: dwc3_gadget_suspend+0x24/0x3c
    irq event stamp: 11252
    hardirqs last enabled at (11251): [] _raw_spin_unlock_irqrestore+0x6c/0x74
    hardirqs last disabled at (11252): [] _raw_spin_lock_irqsave+0x1c/0x5c
    softirqs last enabled at (9744): [] __do_softirq+0x3a4/0x66c
    softirqs last disabled at (9737): [] irq_exit+0x140/0x168
    Preemption disabled at:
    [] (null)
    CPU: 7 PID: 1601 Comm: rtcwake Not tainted
    5.0.0-rc3-next-20190122-00039-ga3f4ee4f8a52 #5252
    Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
    [] (unwind_backtrace) from [] (show_stack+0x10/0x14)
    [] (show_stack) from [] (dump_stack+0x90/0xc8)
    [] (dump_stack) from [] (___might_sleep+0x22c/0x2c8)
    [] (___might_sleep) from [] (synchronize_irq+0x28/0x84)
    [] (synchronize_irq) from [] (dwc3_gadget_suspend+0x34/0x3c)
    [] (dwc3_gadget_suspend) from [] (dwc3_suspend_common+0x154/0x410)
    [] (dwc3_suspend_common) from [] (dwc3_suspend+0x14/0x2c)
    [] (dwc3_suspend) from [] (platform_pm_suspend+0x2c/0x54)
    [] (platform_pm_suspend) from [] (dpm_run_callback+0xa4/0x3dc)
    [] (dpm_run_callback) from [] (__device_suspend+0x134/0x74c)
    [] (__device_suspend) from [] (dpm_suspend+0x174/0x588)
    [] (dpm_suspend) from [] (suspend_devices_and_enter+0xc0/0xe74)
    [] (suspend_devices_and_enter) from [] (pm_suspend+0x770/0xc04)
    [] (pm_suspend) from [] (state_store+0x6c/0xcc)
    [] (state_store) from [] (kobj_attr_store+0x14/0x20)
    [] (kobj_attr_store) from [] (sysfs_kf_write+0x4c/0x50)
    [] (sysfs_kf_write) from [] (kernfs_fop_write+0xfc/0x1e4)
    [] (kernfs_fop_write) from [] (__vfs_write+0x2c/0x160)
    [] (__vfs_write) from [] (vfs_write+0xa4/0x16c)
    [] (vfs_write) from [] (ksys_write+0x40/0x8c)
    [] (ksys_write) from [] (ret_fast_syscall+0x0/0x28)
    Exception stack(0xed55ffa8 to 0xed55fff0)
    ...

    Fixes: 01c10880d242 ("usb: dwc3: gadget: synchronize_irq dwc irq in suspend")
    Signed-off-by: Marek Szyprowski
    Signed-off-by: Felipe Balbi

    Marek Szyprowski
     
  • When we read an array of integers from device properties,
    the temporary buffer is allocated.

    However, in case of dwc3_set_incr_burst_type() it's not freed.
    Free allocated buffer immediately after use.

    Signed-off-by: Andy Shevchenko
    Signed-off-by: Felipe Balbi

    Andy Shevchenko
     
  • Now that the bulk API has a "get all of the clocks" helper to match
    what this code wants, there's little reason not to switch over.

    Signed-off-by: Robin Murphy
    Signed-off-by: Felipe Balbi

    Robin Murphy
     
  • Added delayed status support for Control transfers.

    Tested in all 3 modes: Slave, BDMA and DDMA.
    Performed tests: USB CV (Ch9 and MSC), Control Read/Write tests
    using Synopsys USB test environment function driver.

    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi

    Minas Harutyunyan
     
  • There is no actual need to do the enable/disable_irq dance. Instead enable
    the interrupts on the phy only when necessary.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Felipe Balbi

    Alexandre Belloni
     
  • The STOTG04 phy is used as a drop-in replacement of the ISP1301 but some
    bits doesn't have exactly the same meaning and this can lead to issues.
    Detect the phy dynamically and avoid writing to reserved bits.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Felipe Balbi

    Alexandre Belloni
     
  • Only INT_VBUS_VLD is set to generate ATX interrupts on the phy but
    INT_SESS_VLD is checked in vbus_work. This leads to cases where
    hot-plugging USB doesn't work after boot.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Felipe Balbi

    Alexandre Belloni
     
  • Use a threaded IRQ to handle vbus_work instead of using the global
    worqueue.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Felipe Balbi

    Alexandre Belloni
     
  • Simplify .probe and .remove by using devm managed allocations and requests.

    Signed-off-by: Alexandre Belloni
    Signed-off-by: Felipe Balbi

    Alexandre Belloni
     
  • Most of the phy initialization is shared between host and gadget,
    this adds the turnaround configuration only used by gadgets to
    the global phy init.

    Acked-by: Minas Harutyunyan
    Signed-off-by: Jules Maselbas
    Signed-off-by: Felipe Balbi

    Jules Maselbas
     
  • As the phy initialization is almost the same in host and gadget
    mode. This only move the phy initialization functions into core.c
    for now, the goal is to share theses functions between the two modes.

    Acked-by: Minas Harutyunyan
    Signed-off-by: Jules Maselbas
    Signed-off-by: Felipe Balbi

    Jules Maselbas
     
  • The phy utmi width information is already set in hsotg params,
    phyif is only used in few places and I don't see any reason to
    not use hsotg's params.

    Moreover the utmi width was being forced to 16 bits by platform
    initialization which doesn't take in account HW configuration.

    Acked-by: Minas Harutyunyan
    Signed-off-by: Jules Maselbas
    Signed-off-by: Felipe Balbi

    Jules Maselbas