mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	spi: dw-mmio: add devicetree support
Allow probing the dw-mmio from devicetree. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
		
							parent
							
								
									7171511eae
								
							
						
					
					
						commit
						22dae17e7a
					
				
					 2 changed files with 46 additions and 1 deletions
				
			
		
							
								
								
									
										28
									
								
								Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.txt
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface. | ||||
| 
 | ||||
| Required properties: | ||||
| - compatible : "snps,dw-apb-ssi" | ||||
| - reg : The register base for the controller. | ||||
| - interrupts : One interrupt, used by the controller. | ||||
| - #address-cells : <1>, as required by generic SPI binding. | ||||
| - #size-cells : <0>, also as required by generic SPI binding. | ||||
| 
 | ||||
| Optional properties: | ||||
| - cs-gpios : Specifies the gpio pis to be used for chipselects. | ||||
| - num-cs : The number of chipselects. If omitted, this will default to 4. | ||||
| 
 | ||||
| Child nodes as per the generic SPI binding. | ||||
| 
 | ||||
| Example: | ||||
| 
 | ||||
| 	spi@fff00000 { | ||||
| 		compatible = "snps,dw-apb-ssi"; | ||||
| 		reg = <0xfff00000 0x1000>; | ||||
| 		interrupts = <0 154 4>; | ||||
| 		#address-cells = <1>; | ||||
| 		#size-cells = <0>; | ||||
| 		num-cs = <2>; | ||||
| 		cs-gpios = <&gpio0 13 0>, | ||||
| 			   <&gpio0 14 0>; | ||||
| 	}; | ||||
| 
 | ||||
|  | @ -16,7 +16,9 @@ | |||
| #include <linux/spi/spi.h> | ||||
| #include <linux/scatterlist.h> | ||||
| #include <linux/module.h> | ||||
| #include <linux/of.h> | ||||
| #include <linux/of_gpio.h> | ||||
| #include <linux/of_platform.h> | ||||
| 
 | ||||
| #include "spi-dw.h" | ||||
| 
 | ||||
|  | @ -33,6 +35,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) | |||
| 	struct dw_spi *dws; | ||||
| 	struct resource *mem; | ||||
| 	int ret; | ||||
| 	int num_cs; | ||||
| 
 | ||||
| 	dwsmmio = devm_kzalloc(&pdev->dev, sizeof(struct dw_spi_mmio), | ||||
| 			GFP_KERNEL); | ||||
|  | @ -68,9 +71,16 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) | |||
| 		return ret; | ||||
| 
 | ||||
| 	dws->bus_num = pdev->id; | ||||
| 	dws->num_cs = 4; | ||||
| 
 | ||||
| 	dws->max_freq = clk_get_rate(dwsmmio->clk); | ||||
| 
 | ||||
| 	num_cs = 4; | ||||
| 
 | ||||
| 	if (pdev->dev.of_node) | ||||
| 		of_property_read_u32(pdev->dev.of_node, "num-cs", &num_cs); | ||||
| 
 | ||||
| 	dws->num_cs = num_cs; | ||||
| 
 | ||||
| 	if (pdev->dev.of_node) { | ||||
| 		int i; | ||||
| 
 | ||||
|  | @ -114,12 +124,19 @@ static int dw_spi_mmio_remove(struct platform_device *pdev) | |||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static const struct of_device_id dw_spi_mmio_of_match[] = { | ||||
| 	{ .compatible = "snps,dw-apb-ssi", }, | ||||
| 	{ /* end of table */} | ||||
| }; | ||||
| MODULE_DEVICE_TABLE(of, dw_spi_mmio_of_match); | ||||
| 
 | ||||
| static struct platform_driver dw_spi_mmio_driver = { | ||||
| 	.probe		= dw_spi_mmio_probe, | ||||
| 	.remove		= dw_spi_mmio_remove, | ||||
| 	.driver		= { | ||||
| 		.name	= DRIVER_NAME, | ||||
| 		.owner	= THIS_MODULE, | ||||
| 		.of_match_table = dw_spi_mmio_of_match, | ||||
| 	}, | ||||
| }; | ||||
| module_platform_driver(dw_spi_mmio_driver); | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Steffen Trumtrar
						Steffen Trumtrar