Merge tag 'char-misc-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc

Pull char/misc driver fixes from Greg KH:
"Here are a bunch of small char/misc and other driver subsystem fixes.

Included in here are:

- iio driver fixes for reported problems

- phy driver fixes for a number of reported problems

- mhi resume bugfix for broken hardware

- nvmem driver fix

- rtsx driver fix for irq issues

- fastrpc packet parsing fix

All of these have been in linux-next for a while with no reported
issues"

* tag 'char-misc-5.16-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (33 commits)
bus: mhi: core: Add support for forced PM resume
iio: trigger: stm32-timer: fix MODULE_ALIAS
misc: rtsx: Avoid mangling IRQ during runtime PM
nvmem: eeprom: at25: fix FRAM byte_len
misc: fastrpc: fix improper packet size calculation
MAINTAINERS: add maintainer for Qualcomm FastRPC driver
bus: mhi: pci_generic: Fix device recovery failed issue
iio: adc: stm32: fix null pointer on defer_probe error
phy: HiSilicon: Fix copy and paste bug in error handling
dt-bindings: phy: zynqmp-psgtr: fix USB phy name
phy: ti: omap-usb2: Fix the kernel-doc style
phy: qualcomm: ipq806x-usb: Fix kernel-doc style
iio: at91-sama5d2: Fix incorrect sign extension
iio: adc: axp20x_adc: fix charging current reporting on AXP22x
iio: gyro: adxrs290: fix data signedness
phy: ti: tusb1210: Fix the kernel-doc warn
phy: qualcomm: usb-hsic: Fix the kernel-doc warn
phy: qualcomm: qmp: Add missing struct documentation
phy: mvebu-cp110-utmi: Fix kernel-doc warns
iio: ad7768-1: Call iio_trigger_notify_done() on error
...

+1 -1
Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml
··· 29 29 - PHY_TYPE_PCIE 30 30 - PHY_TYPE_SATA 31 31 - PHY_TYPE_SGMII 32 - - PHY_TYPE_USB 32 + - PHY_TYPE_USB3 33 33 - description: The PHY instance 34 34 minimum: 0 35 35 maximum: 1 # for DP, SATA or USB
+9
MAINTAINERS
··· 15770 15770 F: Documentation/devicetree/bindings/net/qcom,ethqos.txt 15771 15771 F: drivers/net/ethernet/stmicro/stmmac/dwmac-qcom-ethqos.c 15772 15772 15773 + QUALCOMM FASTRPC DRIVER 15774 + M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 15775 + M: Amol Maheshwari <amahesh@qti.qualcomm.com> 15776 + L: linux-arm-msm@vger.kernel.org 15777 + S: Maintained 15778 + F: Documentation/devicetree/bindings/misc/qcom,fastrpc.txt 15779 + F: drivers/misc/fastrpc.c 15780 + F: include/uapi/misc/fastrpc.h 15781 + 15773 15782 QUALCOMM GENERIC INTERFACE I2C DRIVER 15774 15783 M: Akash Asthana <akashast@codeaurora.org> 15775 15784 M: Mukesh Savaliya <msavaliy@codeaurora.org>
+18 -3
drivers/bus/mhi/core/pm.c
··· 881 881 } 882 882 EXPORT_SYMBOL_GPL(mhi_pm_suspend); 883 883 884 - int mhi_pm_resume(struct mhi_controller *mhi_cntrl) 884 + static int __mhi_pm_resume(struct mhi_controller *mhi_cntrl, bool force) 885 885 { 886 886 struct mhi_chan *itr, *tmp; 887 887 struct device *dev = &mhi_cntrl->mhi_dev->dev; ··· 898 898 if (MHI_PM_IN_ERROR_STATE(mhi_cntrl->pm_state)) 899 899 return -EIO; 900 900 901 - if (mhi_get_mhi_state(mhi_cntrl) != MHI_STATE_M3) 902 - return -EINVAL; 901 + if (mhi_get_mhi_state(mhi_cntrl) != MHI_STATE_M3) { 902 + dev_warn(dev, "Resuming from non M3 state (%s)\n", 903 + TO_MHI_STATE_STR(mhi_get_mhi_state(mhi_cntrl))); 904 + if (!force) 905 + return -EINVAL; 906 + } 903 907 904 908 /* Notify clients about exiting LPM */ 905 909 list_for_each_entry_safe(itr, tmp, &mhi_cntrl->lpm_chans, node) { ··· 944 940 945 941 return 0; 946 942 } 943 + 944 + int mhi_pm_resume(struct mhi_controller *mhi_cntrl) 945 + { 946 + return __mhi_pm_resume(mhi_cntrl, false); 947 + } 947 948 EXPORT_SYMBOL_GPL(mhi_pm_resume); 949 + 950 + int mhi_pm_resume_force(struct mhi_controller *mhi_cntrl) 951 + { 952 + return __mhi_pm_resume(mhi_cntrl, true); 953 + } 954 + EXPORT_SYMBOL_GPL(mhi_pm_resume_force); 948 955 949 956 int __mhi_device_get_sync(struct mhi_controller *mhi_cntrl) 950 957 {
+1 -1
drivers/bus/mhi/pci_generic.c
··· 20 20 21 21 #define MHI_PCI_DEFAULT_BAR_NUM 0 22 22 23 - #define MHI_POST_RESET_DELAY_MS 500 23 + #define MHI_POST_RESET_DELAY_MS 2000 24 24 25 25 #define HEALTH_CHECK_PERIOD (HZ * 2) 26 26
+2 -3
drivers/iio/accel/kxcjk-1013.c
··· 1595 1595 return 0; 1596 1596 1597 1597 err_buffer_cleanup: 1598 - if (data->dready_trig) 1599 - iio_triggered_buffer_cleanup(indio_dev); 1598 + iio_triggered_buffer_cleanup(indio_dev); 1600 1599 err_trigger_unregister: 1601 1600 if (data->dready_trig) 1602 1601 iio_trigger_unregister(data->dready_trig); ··· 1617 1618 pm_runtime_disable(&client->dev); 1618 1619 pm_runtime_set_suspended(&client->dev); 1619 1620 1621 + iio_triggered_buffer_cleanup(indio_dev); 1620 1622 if (data->dready_trig) { 1621 - iio_triggered_buffer_cleanup(indio_dev); 1622 1623 iio_trigger_unregister(data->dready_trig); 1623 1624 iio_trigger_unregister(data->motion_trig); 1624 1625 }
+3 -3
drivers/iio/accel/kxsd9.c
··· 224 224 hw_values.chan, 225 225 sizeof(hw_values.chan)); 226 226 if (ret) { 227 - dev_err(st->dev, 228 - "error reading data\n"); 229 - return ret; 227 + dev_err(st->dev, "error reading data: %d\n", ret); 228 + goto out; 230 229 } 231 230 232 231 iio_push_to_buffers_with_timestamp(indio_dev, 233 232 &hw_values, 234 233 iio_get_time_ns(indio_dev)); 234 + out: 235 235 iio_trigger_notify_done(indio_dev->trig); 236 236 237 237 return IRQ_HANDLED;
+1 -1
drivers/iio/accel/mma8452.c
··· 1470 1470 if (ret) 1471 1471 return ret; 1472 1472 1473 - indio_dev->trig = trig; 1473 + indio_dev->trig = iio_trigger_get(trig); 1474 1474 1475 1475 return 0; 1476 1476 }
+1 -1
drivers/iio/adc/Kconfig
··· 532 532 533 533 config IMX8QXP_ADC 534 534 tristate "NXP IMX8QXP ADC driver" 535 - depends on ARCH_MXC_ARM64 || COMPILE_TEST 535 + depends on ARCH_MXC || COMPILE_TEST 536 536 depends on HAS_IOMEM 537 537 help 538 538 Say yes here to build support for IMX8QXP ADC.
+1 -1
drivers/iio/adc/ad7768-1.c
··· 480 480 iio_push_to_buffers_with_timestamp(indio_dev, &st->data.scan, 481 481 iio_get_time_ns(indio_dev)); 482 482 483 - iio_trigger_notify_done(indio_dev->trig); 484 483 err_unlock: 484 + iio_trigger_notify_done(indio_dev->trig); 485 485 mutex_unlock(&st->lock); 486 486 487 487 return IRQ_HANDLED;
+2 -1
drivers/iio/adc/at91-sama5d2_adc.c
··· 1586 1586 *val = st->conversion_value; 1587 1587 ret = at91_adc_adjust_val_osr(st, val); 1588 1588 if (chan->scan_type.sign == 's') 1589 - *val = sign_extend32(*val, 11); 1589 + *val = sign_extend32(*val, 1590 + chan->scan_type.realbits - 1); 1590 1591 st->conversion_done = false; 1591 1592 } 1592 1593
+3 -15
drivers/iio/adc/axp20x_adc.c
··· 251 251 struct iio_chan_spec const *chan, int *val) 252 252 { 253 253 struct axp20x_adc_iio *info = iio_priv(indio_dev); 254 - int size; 255 254 256 - /* 257 - * N.B.: Unlike the Chinese datasheets tell, the charging current is 258 - * stored on 12 bits, not 13 bits. Only discharging current is on 13 259 - * bits. 260 - */ 261 - if (chan->type == IIO_CURRENT && chan->channel == AXP22X_BATT_DISCHRG_I) 262 - size = 13; 263 - else 264 - size = 12; 265 - 266 - *val = axp20x_read_variable_width(info->regmap, chan->address, size); 255 + *val = axp20x_read_variable_width(info->regmap, chan->address, 12); 267 256 if (*val < 0) 268 257 return *val; 269 258 ··· 375 386 return IIO_VAL_INT_PLUS_MICRO; 376 387 377 388 case IIO_CURRENT: 378 - *val = 0; 379 - *val2 = 500000; 380 - return IIO_VAL_INT_PLUS_MICRO; 389 + *val = 1; 390 + return IIO_VAL_INT; 381 391 382 392 case IIO_TEMP: 383 393 *val = 100;
+12 -9
drivers/iio/adc/dln2-adc.c
··· 248 248 static int dln2_adc_read(struct dln2_adc *dln2, unsigned int channel) 249 249 { 250 250 int ret, i; 251 - struct iio_dev *indio_dev = platform_get_drvdata(dln2->pdev); 252 251 u16 conflict; 253 252 __le16 value; 254 253 int olen = sizeof(value); ··· 256 257 .chan = channel, 257 258 }; 258 259 259 - ret = iio_device_claim_direct_mode(indio_dev); 260 - if (ret < 0) 261 - return ret; 262 - 263 260 ret = dln2_adc_set_chan_enabled(dln2, channel, true); 264 261 if (ret < 0) 265 - goto release_direct; 262 + return ret; 266 263 267 264 ret = dln2_adc_set_port_enabled(dln2, true, &conflict); 268 265 if (ret < 0) { ··· 295 300 dln2_adc_set_port_enabled(dln2, false, NULL); 296 301 disable_chan: 297 302 dln2_adc_set_chan_enabled(dln2, channel, false); 298 - release_direct: 299 - iio_device_release_direct_mode(indio_dev); 300 303 301 304 return ret; 302 305 } ··· 330 337 331 338 switch (mask) { 332 339 case IIO_CHAN_INFO_RAW: 340 + ret = iio_device_claim_direct_mode(indio_dev); 341 + if (ret < 0) 342 + return ret; 343 + 333 344 mutex_lock(&dln2->mutex); 334 345 ret = dln2_adc_read(dln2, chan->channel); 335 346 mutex_unlock(&dln2->mutex); 347 + 348 + iio_device_release_direct_mode(indio_dev); 336 349 337 350 if (ret < 0) 338 351 return ret; ··· 655 656 return -ENOMEM; 656 657 } 657 658 iio_trigger_set_drvdata(dln2->trig, dln2); 658 - devm_iio_trigger_register(dev, dln2->trig); 659 + ret = devm_iio_trigger_register(dev, dln2->trig); 660 + if (ret) { 661 + dev_err(dev, "failed to register trigger: %d\n", ret); 662 + return ret; 663 + } 659 664 iio_trigger_set_immutable(indio_dev, dln2->trig); 660 665 661 666 ret = devm_iio_triggered_buffer_setup(dev, indio_dev, NULL,
+2 -1
drivers/iio/adc/stm32-adc.c
··· 1117 1117 { 1118 1118 struct stm32_adc *adc = iio_priv(indio_dev); 1119 1119 1120 + stm32_adc_writel(adc, STM32H7_ADC_PCSEL, 0); 1120 1121 stm32h7_adc_disable(indio_dev); 1121 1122 stm32_adc_int_ch_disable(adc); 1122 1123 stm32h7_adc_enter_pwr_down(adc); ··· 1987 1986 /* Get calibration data for vrefint channel */ 1988 1987 ret = nvmem_cell_read_u16(&indio_dev->dev, "vrefint", &vrefint); 1989 1988 if (ret && ret != -ENOENT) { 1990 - return dev_err_probe(&indio_dev->dev, ret, 1989 + return dev_err_probe(indio_dev->dev.parent, ret, 1991 1990 "nvmem access error\n"); 1992 1991 } 1993 1992 if (ret == -ENOENT)
+3 -2
drivers/iio/gyro/adxrs290.c
··· 7 7 */ 8 8 9 9 #include <linux/bitfield.h> 10 + #include <linux/bitops.h> 10 11 #include <linux/delay.h> 11 12 #include <linux/device.h> 12 13 #include <linux/kernel.h> ··· 125 124 goto err_unlock; 126 125 } 127 126 128 - *val = temp; 127 + *val = sign_extend32(temp, 15); 129 128 130 129 err_unlock: 131 130 mutex_unlock(&st->lock); ··· 147 146 } 148 147 149 148 /* extract lower 12 bits temperature reading */ 150 - *val = temp & 0x0FFF; 149 + *val = sign_extend32(temp, 11); 151 150 152 151 err_unlock: 153 152 mutex_unlock(&st->lock);
+1 -1
drivers/iio/gyro/itg3200_buffer.c
··· 61 61 62 62 iio_push_to_buffers_with_timestamp(indio_dev, &scan, pf->timestamp); 63 63 64 + error_ret: 64 65 iio_trigger_notify_done(indio_dev->trig); 65 66 66 - error_ret: 67 67 return IRQ_HANDLED; 68 68 } 69 69
-1
drivers/iio/industrialio-trigger.c
··· 556 556 irq_modify_status(trig->subirq_base + i, 557 557 IRQ_NOREQUEST | IRQ_NOAUTOEN, IRQ_NOPROBE); 558 558 } 559 - get_device(&trig->dev); 560 559 561 560 return trig; 562 561
+1 -1
drivers/iio/light/ltr501.c
··· 1275 1275 ret = regmap_bulk_read(data->regmap, LTR501_ALS_DATA1, 1276 1276 als_buf, sizeof(als_buf)); 1277 1277 if (ret < 0) 1278 - return ret; 1278 + goto done; 1279 1279 if (test_bit(0, indio_dev->active_scan_mask)) 1280 1280 scan.channels[j++] = le16_to_cpu(als_buf[1]); 1281 1281 if (test_bit(1, indio_dev->active_scan_mask))
+3 -3
drivers/iio/light/stk3310.c
··· 546 546 mutex_lock(&data->lock); 547 547 ret = regmap_field_read(data->reg_flag_nf, &dir); 548 548 if (ret < 0) { 549 - dev_err(&data->client->dev, "register read failed\n"); 550 - mutex_unlock(&data->lock); 551 - return ret; 549 + dev_err(&data->client->dev, "register read failed: %d\n", ret); 550 + goto out; 552 551 } 553 552 event = IIO_UNMOD_EVENT_CODE(IIO_PROXIMITY, 1, 554 553 IIO_EV_TYPE_THRESH, ··· 559 560 ret = regmap_field_write(data->reg_flag_psint, 0); 560 561 if (ret < 0) 561 562 dev_err(&data->client->dev, "failed to reset interrupts\n"); 563 + out: 562 564 mutex_unlock(&data->lock); 563 565 564 566 return IRQ_HANDLED;
+1 -1
drivers/iio/trigger/stm32-timer-trigger.c
··· 912 912 }; 913 913 module_platform_driver(stm32_timer_trigger_driver); 914 914 915 - MODULE_ALIAS("platform: stm32-timer-trigger"); 915 + MODULE_ALIAS("platform:stm32-timer-trigger"); 916 916 MODULE_DESCRIPTION("STMicroelectronics STM32 Timer Trigger driver"); 917 917 MODULE_LICENSE("GPL v2");
-4
drivers/misc/cardreader/rtsx_pcr.c
··· 1803 1803 mutex_lock(&pcr->pcr_mutex); 1804 1804 rtsx_pci_power_off(pcr, HOST_ENTER_S3); 1805 1805 1806 - free_irq(pcr->irq, (void *)pcr); 1807 - 1808 1806 mutex_unlock(&pcr->pcr_mutex); 1809 1807 1810 1808 pcr->is_runtime_suspended = true; ··· 1823 1825 mutex_lock(&pcr->pcr_mutex); 1824 1826 1825 1827 rtsx_pci_write_register(pcr, HOST_SLEEP_STATE, 0x03, 0x00); 1826 - rtsx_pci_acquire_irq(pcr); 1827 - synchronize_irq(pcr->irq); 1828 1828 1829 1829 if (pcr->ops->fetch_vendor_settings) 1830 1830 pcr->ops->fetch_vendor_settings(pcr);
+18 -20
drivers/misc/eeprom/at25.c
··· 376 376 static int at25_probe(struct spi_device *spi) 377 377 { 378 378 struct at25_data *at25 = NULL; 379 - struct spi_eeprom chip; 380 379 int err; 381 380 int sr; 382 381 u8 id[FM25_ID_LEN]; ··· 388 389 if (match && !strcmp(match->compatible, "cypress,fm25")) 389 390 is_fram = 1; 390 391 392 + at25 = devm_kzalloc(&spi->dev, sizeof(struct at25_data), GFP_KERNEL); 393 + if (!at25) 394 + return -ENOMEM; 395 + 391 396 /* Chip description */ 392 - if (!spi->dev.platform_data) { 393 - if (!is_fram) { 394 - err = at25_fw_to_chip(&spi->dev, &chip); 395 - if (err) 396 - return err; 397 - } 398 - } else 399 - chip = *(struct spi_eeprom *)spi->dev.platform_data; 397 + if (spi->dev.platform_data) { 398 + memcpy(&at25->chip, spi->dev.platform_data, sizeof(at25->chip)); 399 + } else if (!is_fram) { 400 + err = at25_fw_to_chip(&spi->dev, &at25->chip); 401 + if (err) 402 + return err; 403 + } 400 404 401 405 /* Ping the chip ... the status register is pretty portable, 402 406 * unlike probing manufacturer IDs. We do expect that system ··· 411 409 return -ENXIO; 412 410 } 413 411 414 - at25 = devm_kzalloc(&spi->dev, sizeof(struct at25_data), GFP_KERNEL); 415 - if (!at25) 416 - return -ENOMEM; 417 - 418 412 mutex_init(&at25->lock); 419 - at25->chip = chip; 420 413 at25->spi = spi; 421 414 spi_set_drvdata(spi, at25); 422 415 ··· 428 431 dev_err(&spi->dev, "Error: unsupported size (id %02x)\n", id[7]); 429 432 return -ENODEV; 430 433 } 431 - chip.byte_len = int_pow(2, id[7] - 0x21 + 4) * 1024; 434 + at25->chip.byte_len = int_pow(2, id[7] - 0x21 + 4) * 1024; 432 435 433 436 if (at25->chip.byte_len > 64 * 1024) 434 437 at25->chip.flags |= EE_ADDR3; ··· 461 464 at25->nvmem_config.type = is_fram ? NVMEM_TYPE_FRAM : NVMEM_TYPE_EEPROM; 462 465 at25->nvmem_config.name = dev_name(&spi->dev); 463 466 at25->nvmem_config.dev = &spi->dev; 464 - at25->nvmem_config.read_only = chip.flags & EE_READONLY; 467 + at25->nvmem_config.read_only = at25->chip.flags & EE_READONLY; 465 468 at25->nvmem_config.root_only = true; 466 469 at25->nvmem_config.owner = THIS_MODULE; 467 470 at25->nvmem_config.compat = true; ··· 471 474 at25->nvmem_config.priv = at25; 472 475 at25->nvmem_config.stride = 1; 473 476 at25->nvmem_config.word_size = 1; 474 - at25->nvmem_config.size = chip.byte_len; 477 + at25->nvmem_config.size = at25->chip.byte_len; 475 478 476 479 at25->nvmem = devm_nvmem_register(&spi->dev, &at25->nvmem_config); 477 480 if (IS_ERR(at25->nvmem)) 478 481 return PTR_ERR(at25->nvmem); 479 482 480 483 dev_info(&spi->dev, "%d %s %s %s%s, pagesize %u\n", 481 - (chip.byte_len < 1024) ? chip.byte_len : (chip.byte_len / 1024), 482 - (chip.byte_len < 1024) ? "Byte" : "KByte", 484 + (at25->chip.byte_len < 1024) ? 485 + at25->chip.byte_len : (at25->chip.byte_len / 1024), 486 + (at25->chip.byte_len < 1024) ? "Byte" : "KByte", 483 487 at25->chip.name, is_fram ? "fram" : "eeprom", 484 - (chip.flags & EE_READONLY) ? " (readonly)" : "", 488 + (at25->chip.flags & EE_READONLY) ? " (readonly)" : "", 485 489 at25->chip.page_size); 486 490 return 0; 487 491 }
+6 -4
drivers/misc/fastrpc.c
··· 719 719 static u64 fastrpc_get_payload_size(struct fastrpc_invoke_ctx *ctx, int metalen) 720 720 { 721 721 u64 size = 0; 722 - int i; 722 + int oix; 723 723 724 724 size = ALIGN(metalen, FASTRPC_ALIGN); 725 - for (i = 0; i < ctx->nscalars; i++) { 725 + for (oix = 0; oix < ctx->nbufs; oix++) { 726 + int i = ctx->olaps[oix].raix; 727 + 726 728 if (ctx->args[i].fd == 0 || ctx->args[i].fd == -1) { 727 729 728 - if (ctx->olaps[i].offset == 0) 730 + if (ctx->olaps[oix].offset == 0) 729 731 size = ALIGN(size, FASTRPC_ALIGN); 730 732 731 - size += (ctx->olaps[i].mend - ctx->olaps[i].mstart); 733 + size += (ctx->olaps[oix].mend - ctx->olaps[oix].mstart); 732 734 } 733 735 } 734 736
+5 -1
drivers/net/wireless/ath/ath11k/mhi.c
··· 533 533 ret = mhi_pm_suspend(ab_pci->mhi_ctrl); 534 534 break; 535 535 case ATH11K_MHI_RESUME: 536 - ret = mhi_pm_resume(ab_pci->mhi_ctrl); 536 + /* Do force MHI resume as some devices like QCA6390, WCN6855 537 + * are not in M3 state but they are functional. So just ignore 538 + * the MHI state while resuming. 539 + */ 540 + ret = mhi_pm_resume_force(ab_pci->mhi_ctrl); 537 541 break; 538 542 case ATH11K_MHI_TRIGGER_RDDM: 539 543 ret = mhi_force_rddm_mode(ab_pci->mhi_ctrl);
+2 -2
drivers/phy/hisilicon/phy-hi3670-pcie.c
··· 757 757 return PTR_ERR(phy->sysctrl); 758 758 759 759 phy->pmctrl = syscon_regmap_lookup_by_compatible("hisilicon,hi3670-pmctrl"); 760 - if (IS_ERR(phy->sysctrl)) 761 - return PTR_ERR(phy->sysctrl); 760 + if (IS_ERR(phy->pmctrl)) 761 + return PTR_ERR(phy->pmctrl); 762 762 763 763 /* clocks */ 764 764 phy->phy_ref_clk = devm_clk_get(dev, "phy_ref");
+2 -2
drivers/phy/marvell/phy-mvebu-cp110-utmi.c
··· 82 82 * struct mvebu_cp110_utmi - PHY driver data 83 83 * 84 84 * @regs: PHY registers 85 - * @syscom: Regmap with system controller registers 85 + * @syscon: Regmap with system controller registers 86 86 * @dev: device driver handle 87 - * @caps: PHY capabilities 87 + * @ops: phy ops 88 88 */ 89 89 struct mvebu_cp110_utmi { 90 90 void __iomem *regs;
+14 -12
drivers/phy/qualcomm/phy-qcom-ipq806x-usb.c
··· 127 127 }; 128 128 129 129 /** 130 - * Write register and read back masked value to confirm it is written 130 + * usb_phy_write_readback() - Write register and read back masked value to 131 + * confirm it is written 131 132 * 132 - * @base - QCOM DWC3 PHY base virtual address. 133 - * @offset - register offset. 134 - * @mask - register bitmask specifying what should be updated 135 - * @val - value to write. 133 + * @phy_dwc3: QCOM DWC3 phy context 134 + * @offset: register offset. 135 + * @mask: register bitmask specifying what should be updated 136 + * @val: value to write. 136 137 */ 137 138 static inline void usb_phy_write_readback(struct usb_phy *phy_dwc3, 138 139 u32 offset, ··· 172 171 } 173 172 174 173 /** 175 - * Write SSPHY register 174 + * usb_ss_write_phycreg() - Write SSPHY register 176 175 * 177 - * @base - QCOM DWC3 PHY base virtual address. 178 - * @addr - SSPHY address to write. 179 - * @val - value to write. 176 + * @phy_dwc3: QCOM DWC3 phy context 177 + * @addr: SSPHY address to write. 178 + * @val: value to write. 180 179 */ 181 180 static int usb_ss_write_phycreg(struct usb_phy *phy_dwc3, 182 181 u32 addr, u32 val) ··· 210 209 } 211 210 212 211 /** 213 - * Read SSPHY register. 212 + * usb_ss_read_phycreg() - Read SSPHY register. 214 213 * 215 - * @base - QCOM DWC3 PHY base virtual address. 216 - * @addr - SSPHY address to read. 214 + * @phy_dwc3: QCOM DWC3 phy context 215 + * @addr: SSPHY address to read. 216 + * @val: pointer in which read is store. 217 217 */ 218 218 static int usb_ss_read_phycreg(struct usb_phy *phy_dwc3, 219 219 u32 addr, u32 *val)
+3
drivers/phy/qualcomm/phy-qcom-qmp.c
··· 2973 2973 * @qmp: QMP phy to which this lane belongs 2974 2974 * @lane_rst: lane's reset controller 2975 2975 * @mode: current PHY mode 2976 + * @dp_aux_cfg: Display port aux config 2977 + * @dp_opts: Display port optional config 2978 + * @dp_clks: Display port clocks 2976 2979 */ 2977 2980 struct qmp_phy { 2978 2981 struct phy *phy;
+1 -1
drivers/phy/qualcomm/phy-qcom-usb-hsic.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 - /** 2 + /* 3 3 * Copyright (C) 2016 Linaro Ltd 4 4 */ 5 5 #include <linux/module.h>
+1 -1
drivers/phy/st/phy-stm32-usbphyc.c
··· 478 478 if (!of_property_read_bool(np, "st,no-lsfs-fb-cap")) 479 479 usbphyc_phy->tune |= LFSCAPEN; 480 480 481 - if (of_property_read_bool(np, "st,slow-hs-slew-rate")) 481 + if (of_property_read_bool(np, "st,decrease-hs-slew-rate")) 482 482 usbphyc_phy->tune |= HSDRVSLEW; 483 483 484 484 ret = of_property_read_u32(np, "st,tune-hs-dc-level", &val);
+1 -1
drivers/phy/ti/phy-am654-serdes.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 - /** 2 + /* 3 3 * PCIe SERDES driver for AM654x SoC 4 4 * 5 5 * Copyright (C) 2018 - 2019 Texas Instruments Incorporated - http://www.ti.com/
+1 -1
drivers/phy/ti/phy-j721e-wiz.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0 2 - /** 2 + /* 3 3 * Wrapper driver for SERDES used in J721E 4 4 * 5 5 * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
+3 -3
drivers/phy/ti/phy-omap-usb2.c
··· 89 89 } 90 90 91 91 /** 92 - * omap_usb2_set_comparator - links the comparator present in the system with 93 - * this phy 94 - * @comparator - the companion phy(comparator) for this phy 92 + * omap_usb2_set_comparator() - links the comparator present in the system with this phy 93 + * 94 + * @comparator: the companion phy(comparator) for this phy 95 95 * 96 96 * The phy companion driver should call this API passing the phy_companion 97 97 * filled with set_vbus and start_srp to be used by usb phy.
+1 -1
drivers/phy/ti/phy-tusb1210.c
··· 1 1 // SPDX-License-Identifier: GPL-2.0-only 2 - /** 2 + /* 3 3 * tusb1210.c - TUSB1210 USB ULPI PHY driver 4 4 * 5 5 * Copyright (C) 2015 Intel Corporation
+13
include/linux/mhi.h
··· 664 664 int mhi_pm_resume(struct mhi_controller *mhi_cntrl); 665 665 666 666 /** 667 + * mhi_pm_resume_force - Force resume MHI from suspended state 668 + * @mhi_cntrl: MHI controller 669 + * 670 + * Resume the device irrespective of its MHI state. As per the MHI spec, devices 671 + * has to be in M3 state during resume. But some devices seem to be in a 672 + * different MHI state other than M3 but they continue working fine if allowed. 673 + * This API is intented to be used for such devices. 674 + * 675 + * Return: 0 if the resume succeeds, a negative error code otherwise 676 + */ 677 + int mhi_pm_resume_force(struct mhi_controller *mhi_cntrl); 678 + 679 + /** 667 680 * mhi_download_rddm_image - Download ramdump image from device for 668 681 * debugging purpose. 669 682 * @mhi_cntrl: MHI controller