After 5fa6863ba692 ("spi: Check we have a spi_device_id for each DT
compatible") we need to add spi id_tables. Changing existing macro
FBTFT_REGISTER_DRIVER would have meant to change arguments and
therefore adjust all fbtft drivers.

This patch adds a new and simplified macro FBTFT_REGISTER_SPI_DRIVER
that includes a spi id_table, and in addition to that:
- does not define a platform driver
- uses macro module_spi_driver()

Signed-off-by: Heiner Kallweit <[email protected]>
---
 drivers/staging/fbtft/fbtft.h | 41 +++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/drivers/staging/fbtft/fbtft.h b/drivers/staging/fbtft/fbtft.h
index 6869f3603..4cdec34e2 100644
--- a/drivers/staging/fbtft/fbtft.h
+++ b/drivers/staging/fbtft/fbtft.h
@@ -346,6 +346,47 @@ static void __exit fbtft_driver_module_exit(void)          
                \
 module_init(fbtft_driver_module_init);                                     \
 module_exit(fbtft_driver_module_exit);
 
+#define FBTFT_REGISTER_SPI_DRIVER(_name, _comp_vend, _comp_dev, _display)      
\
+                                                                               
\
+static int fbtft_driver_probe_spi(struct spi_device *spi)                      
\
+{                                                                              
\
+       return fbtft_probe_common(_display, spi, NULL);                         
\
+}                                                                              
\
+                                                                               
\
+static int fbtft_driver_remove_spi(struct spi_device *spi)                     
\
+{                                                                              
\
+       struct fb_info *info = spi_get_drvdata(spi);                            
\
+                                                                               
\
+       fbtft_remove_common(&spi->dev, info);                                   
\
+       return 0;                                                               
\
+}                                                                              
\
+                                                                               
\
+static const struct of_device_id dt_ids[] = {                                  
\
+       { .compatible = _comp_vend "," _comp_dev },                             
\
+       {},                                                                     
\
+};                                                                             
\
+                                                                               
\
+MODULE_DEVICE_TABLE(of, dt_ids);                                               
\
+                                                                               
\
+static const struct spi_device_id spi_ids[] = {                                
        \
+       { .name = _comp_dev },                                                  
\
+       {},                                                                     
\
+};                                                                             
\
+                                                                               
\
+MODULE_DEVICE_TABLE(spi, spi_ids);                                             
\
+                                                                               
\
+static struct spi_driver fbtft_driver_spi_driver = {                           
\
+       .driver = {                                                             
\
+               .name  = _name,                                                 
\
+               .of_match_table = dt_ids,                                       
\
+       },                                                                      
\
+       .id_table = spi_ids,                                                    
\
+       .probe  = fbtft_driver_probe_spi,                                       
\
+       .remove = fbtft_driver_remove_spi,                                      
\
+};                                                                             
\
+                                                                               
\
+module_spi_driver(fbtft_driver_spi_driver);
+
 /* Debug macros */
 
 /* shorthand debug levels */
-- 
2.34.1


Reply via email to