Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'mfd-fixes-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd

Pull MDF bugfixes from Lee Jones:

- Fix message timing issues and report correct state when an error
occurs in cros_ec_spi

- Reorder enums used for Power Management in rtsx_pci

- Use correct OF helper for obtaining child nodes in twl4030-audio and
twl6040

* tag 'mfd-fixes-4.15' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
mfd: Fix RTS5227 (and others) powermanagement
mfd: cros ec: spi: Fix "in progress" error signaling
mfd: twl6040: Fix child-node lookup
mfd: twl4030-audio: Fix sibling-node lookup
mfd: cros ec: spi: Don't send first message too soon

+41 -35
+25 -28
drivers/mfd/cros_ec_spi.c
··· 377 377 u8 *ptr; 378 378 u8 *rx_buf; 379 379 u8 sum; 380 + u8 rx_byte; 380 381 int ret = 0, final_ret; 381 382 382 383 len = cros_ec_prepare_tx(ec_dev, ec_msg); ··· 422 421 if (!ret) { 423 422 /* Verify that EC can process command */ 424 423 for (i = 0; i < len; i++) { 425 - switch (rx_buf[i]) { 426 - case EC_SPI_PAST_END: 427 - case EC_SPI_RX_BAD_DATA: 428 - case EC_SPI_NOT_READY: 429 - ret = -EAGAIN; 430 - ec_msg->result = EC_RES_IN_PROGRESS; 431 - default: 424 + rx_byte = rx_buf[i]; 425 + if (rx_byte == EC_SPI_PAST_END || 426 + rx_byte == EC_SPI_RX_BAD_DATA || 427 + rx_byte == EC_SPI_NOT_READY) { 428 + ret = -EREMOTEIO; 432 429 break; 433 430 } 434 - if (ret) 435 - break; 436 431 } 437 - if (!ret) 438 - ret = cros_ec_spi_receive_packet(ec_dev, 439 - ec_msg->insize + sizeof(*response)); 440 - } else { 441 - dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); 442 432 } 433 + 434 + if (!ret) 435 + ret = cros_ec_spi_receive_packet(ec_dev, 436 + ec_msg->insize + sizeof(*response)); 437 + else 438 + dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); 443 439 444 440 final_ret = terminate_request(ec_dev); 445 441 ··· 506 508 int i, len; 507 509 u8 *ptr; 508 510 u8 *rx_buf; 511 + u8 rx_byte; 509 512 int sum; 510 513 int ret = 0, final_ret; 511 514 ··· 543 544 if (!ret) { 544 545 /* Verify that EC can process command */ 545 546 for (i = 0; i < len; i++) { 546 - switch (rx_buf[i]) { 547 - case EC_SPI_PAST_END: 548 - case EC_SPI_RX_BAD_DATA: 549 - case EC_SPI_NOT_READY: 550 - ret = -EAGAIN; 551 - ec_msg->result = EC_RES_IN_PROGRESS; 552 - default: 547 + rx_byte = rx_buf[i]; 548 + if (rx_byte == EC_SPI_PAST_END || 549 + rx_byte == EC_SPI_RX_BAD_DATA || 550 + rx_byte == EC_SPI_NOT_READY) { 551 + ret = -EREMOTEIO; 553 552 break; 554 553 } 555 - if (ret) 556 - break; 557 554 } 558 - if (!ret) 559 - ret = cros_ec_spi_receive_response(ec_dev, 560 - ec_msg->insize + EC_MSG_TX_PROTO_BYTES); 561 - } else { 562 - dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); 563 555 } 556 + 557 + if (!ret) 558 + ret = cros_ec_spi_receive_response(ec_dev, 559 + ec_msg->insize + EC_MSG_TX_PROTO_BYTES); 560 + else 561 + dev_err(ec_dev->dev, "spi transfer failed: %d\n", ret); 564 562 565 563 final_ret = terminate_request(ec_dev); 566 564 ··· 663 667 sizeof(struct ec_response_get_protocol_info); 664 668 ec_dev->dout_size = sizeof(struct ec_host_request); 665 669 670 + ec_spi->last_transfer_ns = ktime_get_ns(); 666 671 667 672 err = cros_ec_register(ec_dev); 668 673 if (err) {
+7 -2
drivers/mfd/twl4030-audio.c
··· 159 159 EXPORT_SYMBOL_GPL(twl4030_audio_get_mclk); 160 160 161 161 static bool twl4030_audio_has_codec(struct twl4030_audio_data *pdata, 162 - struct device_node *node) 162 + struct device_node *parent) 163 163 { 164 + struct device_node *node; 165 + 164 166 if (pdata && pdata->codec) 165 167 return true; 166 168 167 - if (of_find_node_by_name(node, "codec")) 169 + node = of_get_child_by_name(parent, "codec"); 170 + if (node) { 171 + of_node_put(node); 168 172 return true; 173 + } 169 174 170 175 return false; 171 176 }
+8 -4
drivers/mfd/twl6040.c
··· 97 97 }; 98 98 99 99 100 - static bool twl6040_has_vibra(struct device_node *node) 100 + static bool twl6040_has_vibra(struct device_node *parent) 101 101 { 102 - #ifdef CONFIG_OF 103 - if (of_find_node_by_name(node, "vibra")) 102 + struct device_node *node; 103 + 104 + node = of_get_child_by_name(parent, "vibra"); 105 + if (node) { 106 + of_node_put(node); 104 107 return true; 105 - #endif 108 + } 109 + 106 110 return false; 107 111 } 108 112
+1 -1
include/linux/mfd/rtsx_pci.h
··· 915 915 #define LTR_L1SS_PWR_GATE_CHECK_CARD_EN BIT(6) 916 916 917 917 enum dev_aspm_mode { 918 - DEV_ASPM_DISABLE = 0, 919 918 DEV_ASPM_DYNAMIC, 920 919 DEV_ASPM_BACKDOOR, 921 920 DEV_ASPM_STATIC, 921 + DEV_ASPM_DISABLE, 922 922 }; 923 923 924 924 /*