hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/spi/spidev.c
....@@ -376,12 +376,23 @@
376376 switch (cmd) {
377377 /* read requests */
378378 case SPI_IOC_RD_MODE:
379
- retval = put_user(spi->mode & SPI_MODE_MASK,
380
- (__u8 __user *)arg);
381
- break;
382379 case SPI_IOC_RD_MODE32:
383
- retval = put_user(spi->mode & SPI_MODE_MASK,
384
- (__u32 __user *)arg);
380
+ tmp = spi->mode;
381
+
382
+ {
383
+ struct spi_controller *ctlr = spi->controller;
384
+
385
+ if (ctlr->use_gpio_descriptors && ctlr->cs_gpiods &&
386
+ ctlr->cs_gpiods[spi->chip_select])
387
+ tmp &= ~SPI_CS_HIGH;
388
+ }
389
+
390
+ if (cmd == SPI_IOC_RD_MODE)
391
+ retval = put_user(tmp & SPI_MODE_MASK,
392
+ (__u8 __user *)arg);
393
+ else
394
+ retval = put_user(tmp & SPI_MODE_MASK,
395
+ (__u32 __user *)arg);
385396 break;
386397 case SPI_IOC_RD_LSB_FIRST:
387398 retval = put_user((spi->mode & SPI_LSB_FIRST) ? 1 : 0,
....@@ -581,7 +592,6 @@
581592 if (!spidev->tx_buffer) {
582593 spidev->tx_buffer = kmalloc(bufsiz, GFP_KERNEL);
583594 if (!spidev->tx_buffer) {
584
- dev_dbg(&spidev->spi->dev, "open/ENOMEM\n");
585595 status = -ENOMEM;
586596 goto err_find_dev;
587597 }
....@@ -590,7 +600,6 @@
590600 if (!spidev->rx_buffer) {
591601 spidev->rx_buffer = kmalloc(bufsiz, GFP_KERNEL);
592602 if (!spidev->rx_buffer) {
593
- dev_dbg(&spidev->spi->dev, "open/ENOMEM\n");
594603 status = -ENOMEM;
595604 goto err_alloc_rx_buf;
596605 }