forked from mirrors/linux
		
	spi: core: Only check bits_per_word validity when explicitly provided
On SPI device probe, the core will call spi_setup in spi_add_device before the corresponding driver was probed. When this happens, the bits_per_word member of the device is not yet set by the driver, resulting in the default being set to 8 bits-per-word. However some controllers do not support 8 bits-per-word at all, which results in a failure when checking the bits-per-word validity. In order to support these devices, skip the bits-per-word validity check when it is not explicitly provided by drivers. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Link: https://lore.kernel.org/r/20220412122207.130181-1-paul.kocialkowski@bootlin.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
		
							parent
							
								
									c6cf1fafb6
								
							
						
					
					
						commit
						b3fe2e5167
					
				
					 1 changed files with 11 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -3513,13 +3513,18 @@ int spi_setup(struct spi_device *spi)
 | 
			
		|||
		return -EINVAL;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!spi->bits_per_word)
 | 
			
		||||
	if (!spi->bits_per_word) {
 | 
			
		||||
		spi->bits_per_word = 8;
 | 
			
		||||
 | 
			
		||||
	} else {
 | 
			
		||||
		/*
 | 
			
		||||
		 * Some controllers may not support the default 8 bits-per-word
 | 
			
		||||
		 * so only perform the check when this is explicitly provided.
 | 
			
		||||
		 */
 | 
			
		||||
		status = __spi_validate_bits_per_word(spi->controller,
 | 
			
		||||
						      spi->bits_per_word);
 | 
			
		||||
		if (status)
 | 
			
		||||
			return status;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (spi->controller->max_speed_hz &&
 | 
			
		||||
	    (!spi->max_speed_hz ||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue