forked from mirrors/linux
		
	spi: Don't call spi_get_gpio_descs() before device name is set
Move code calling spi_get_gpio_descs() to happen after ctlr->dev's name is set in order to have proper GPIO consumer names. Before: cat /sys/kernel/debug/gpio gpiochip0: GPIOs 0-31, parent: platform/40049000.gpio, vf610-gpio: gpio-6 ( |regulator-usb0-vbus ) out lo gpiochip1: GPIOs 32-63, parent: platform/4004a000.gpio, vf610-gpio: gpio-36 ( |scl ) in hi gpio-37 ( |sda ) in hi gpio-40 ( |(null) CS1 ) out lo gpio-41 ( |(null) CS0 ) out lo ACTIVE LOW gpio-42 ( |miso ) in hi gpio-43 ( |mosi ) in lo gpio-44 ( |sck ) out lo After: cat /sys/kernel/debug/gpio gpiochip0: GPIOs 0-31, parent: platform/40049000.gpio, vf610-gpio: gpio-6 ( |regulator-usb0-vbus ) out lo gpiochip1: GPIOs 32-63, parent: platform/4004a000.gpio, vf610-gpio: gpio-36 ( |scl ) in hi gpio-37 ( |sda ) in hi gpio-40 ( |spi0 CS1 ) out lo gpio-41 ( |spi0 CS0 ) out lo ACTIVE LOW gpio-42 ( |miso ) in hi gpio-43 ( |mosi ) in lo gpio-44 ( |sck ) out lo Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc: Chris Healy <cphealy@gmail.com> Cc: linux-spi@vger.kernel.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									249e2632dc
								
							
						
					
					
						commit
						0a919ae492
					
				
					 1 changed files with 19 additions and 18 deletions
				
			
		| 
						 | 
					@ -2281,24 +2281,6 @@ int spi_register_controller(struct spi_controller *ctlr)
 | 
				
			||||||
	if (status)
 | 
						if (status)
 | 
				
			||||||
		return status;
 | 
							return status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (!spi_controller_is_slave(ctlr)) {
 | 
					 | 
				
			||||||
		if (ctlr->use_gpio_descriptors) {
 | 
					 | 
				
			||||||
			status = spi_get_gpio_descs(ctlr);
 | 
					 | 
				
			||||||
			if (status)
 | 
					 | 
				
			||||||
				return status;
 | 
					 | 
				
			||||||
			/*
 | 
					 | 
				
			||||||
			 * A controller using GPIO descriptors always
 | 
					 | 
				
			||||||
			 * supports SPI_CS_HIGH if need be.
 | 
					 | 
				
			||||||
			 */
 | 
					 | 
				
			||||||
			ctlr->mode_bits |= SPI_CS_HIGH;
 | 
					 | 
				
			||||||
		} else {
 | 
					 | 
				
			||||||
			/* Legacy code path for GPIOs from DT */
 | 
					 | 
				
			||||||
			status = of_spi_register_master(ctlr);
 | 
					 | 
				
			||||||
			if (status)
 | 
					 | 
				
			||||||
				return status;
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* even if it's just one always-selected device, there must
 | 
						/* even if it's just one always-selected device, there must
 | 
				
			||||||
	 * be at least one chipselect
 | 
						 * be at least one chipselect
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
| 
						 | 
					@ -2355,6 +2337,25 @@ int spi_register_controller(struct spi_controller *ctlr)
 | 
				
			||||||
	 * registration fails if the bus ID is in use.
 | 
						 * registration fails if the bus ID is in use.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	dev_set_name(&ctlr->dev, "spi%u", ctlr->bus_num);
 | 
						dev_set_name(&ctlr->dev, "spi%u", ctlr->bus_num);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (!spi_controller_is_slave(ctlr)) {
 | 
				
			||||||
 | 
							if (ctlr->use_gpio_descriptors) {
 | 
				
			||||||
 | 
								status = spi_get_gpio_descs(ctlr);
 | 
				
			||||||
 | 
								if (status)
 | 
				
			||||||
 | 
									return status;
 | 
				
			||||||
 | 
								/*
 | 
				
			||||||
 | 
								 * A controller using GPIO descriptors always
 | 
				
			||||||
 | 
								 * supports SPI_CS_HIGH if need be.
 | 
				
			||||||
 | 
								 */
 | 
				
			||||||
 | 
								ctlr->mode_bits |= SPI_CS_HIGH;
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								/* Legacy code path for GPIOs from DT */
 | 
				
			||||||
 | 
								status = of_spi_register_master(ctlr);
 | 
				
			||||||
 | 
								if (status)
 | 
				
			||||||
 | 
									return status;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	status = device_add(&ctlr->dev);
 | 
						status = device_add(&ctlr->dev);
 | 
				
			||||||
	if (status < 0) {
 | 
						if (status < 0) {
 | 
				
			||||||
		/* free bus id */
 | 
							/* free bus id */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue