bcm27xx: update patches from RPi foundation
[oweals/openwrt.git] / target / linux / bcm27xx / patches-5.4 / 950-0135-spi-spi-bcm2835-Disable-forced-software-CS.patch
1 From dc1e3fefce7abd7532fbc74e26df61a8ced1dcd6 Mon Sep 17 00:00:00 2001
2 From: Phil Elwell <phil@raspberrypi.org>
3 Date: Tue, 15 Jan 2019 12:41:15 +0000
4 Subject: [PATCH] spi: spi-bcm2835: Disable forced software CS
5
6 With GPIO CS used by the DTBs, allow hardware CS to be selected by an
7 overlay.
8
9 Signed-off-by: Phil Elwell <phil@raspberrypi.org>
10 ---
11  drivers/spi/spi-bcm2835.c | 37 -------------------------------------
12  1 file changed, 37 deletions(-)
13
14 --- a/drivers/spi/spi-bcm2835.c
15 +++ b/drivers/spi/spi-bcm2835.c
16 @@ -1279,43 +1279,6 @@ static int bcm2835_spi_setup(struct spi_
17                 return -EINVAL;
18         }
19  
20 -       /*
21 -        * Translate native CS to GPIO
22 -        *
23 -        * FIXME: poking around in the gpiolib internals like this is
24 -        * not very good practice. Find a way to locate the real problem
25 -        * and fix it. Why is the GPIO descriptor in spi->cs_gpiod
26 -        * sometimes not assigned correctly? Erroneous device trees?
27 -        */
28 -
29 -       /* get the gpio chip for the base */
30 -       chip = gpiochip_find("pinctrl-bcm2835", chip_match_name);
31 -       if (!chip)
32 -               return 0;
33 -
34 -       /*
35 -        * Retrieve the corresponding GPIO line used for CS.
36 -        * The inversion semantics will be handled by the GPIO core
37 -        * code, so we pass GPIOS_OUT_LOW for "unasserted" and
38 -        * the correct flag for inversion semantics. The SPI_CS_HIGH
39 -        * on spi->mode cannot be checked for polarity in this case
40 -        * as the flag use_gpio_descriptors enforces SPI_CS_HIGH.
41 -        */
42 -       if (of_property_read_bool(spi->dev.of_node, "spi-cs-high"))
43 -               lflags = GPIO_ACTIVE_HIGH;
44 -       else
45 -               lflags = GPIO_ACTIVE_LOW;
46 -       spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
47 -                                                 DRV_NAME,
48 -                                                 lflags,
49 -                                                 GPIOD_OUT_LOW);
50 -       if (IS_ERR(spi->cs_gpiod))
51 -               return PTR_ERR(spi->cs_gpiod);
52 -
53 -       /* and set up the "mode" and level */
54 -       dev_info(&spi->dev, "setting up native-CS%i to use GPIO\n",
55 -                spi->chip_select);
56 -
57         return 0;
58  }
59