mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From b1155e695a942af57609f4b2840bc4e9826942bf Mon Sep 17 00:00:00 2001
 | |
| From: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | |
| Date: Wed, 19 Jan 2022 17:22:57 +0000
 | |
| Subject: [PATCH] mfd: simple-mfd-i2c: Add configuration for RPi POE HAT
 | |
| 
 | |
| The Raspbery Pi PoE+ HAT exposes a fan controller and power
 | |
| supply status reporting via a single I2C address.
 | |
| 
 | |
| Create an MFD device that allows loading of the relevant
 | |
| sub-drivers, with a shared I2C regmap.
 | |
| 
 | |
| Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
 | |
| ---
 | |
|  drivers/mfd/Kconfig          | 10 ++++++++++
 | |
|  drivers/mfd/simple-mfd-i2c.c | 10 ++++++++++
 | |
|  2 files changed, 20 insertions(+)
 | |
| 
 | |
| --- a/drivers/mfd/Kconfig
 | |
| +++ b/drivers/mfd/Kconfig
 | |
| @@ -1152,6 +1152,16 @@ config MFD_SY7636A
 | |
|  	  To enable support for building sub-devices as modules,
 | |
|  	  choose M here.
 | |
|  
 | |
| +config MFD_RASPBERRYPI_POE_HAT
 | |
| +	tristate "Raspberry Pi PoE HAT MFD"
 | |
| +	depends on I2C
 | |
| +	select MFD_SIMPLE_MFD_I2C
 | |
| +	help
 | |
| +	  This module supports the PWM fan controller found on the Raspberry Pi
 | |
| +	  POE and POE+ HAT boards, and the power supply driver on the POE+ HAT.
 | |
| +	  (Functionally it relies on MFD_SIMPLE_MFD_I2C to provide the framework
 | |
| +	  that loads the child drivers).
 | |
| +
 | |
|  config MFD_RDC321X
 | |
|  	tristate "RDC R-321x southbridge"
 | |
|  	select MFD_CORE
 | |
| --- a/drivers/mfd/simple-mfd-i2c.c
 | |
| +++ b/drivers/mfd/simple-mfd-i2c.c
 | |
| @@ -29,6 +29,15 @@ static const struct regmap_config regmap
 | |
|  	.val_bits = 8,
 | |
|  };
 | |
|  
 | |
| +static const struct regmap_config regmap_config_16r_8v = {
 | |
| +	.reg_bits = 16,
 | |
| +	.val_bits = 8,
 | |
| +};
 | |
| +
 | |
| +static const struct simple_mfd_data rpi_poe_core = {
 | |
| +	.regmap_config = ®map_config_16r_8v,
 | |
| +};
 | |
| +
 | |
|  static int simple_mfd_i2c_probe(struct i2c_client *i2c)
 | |
|  {
 | |
|  	const struct simple_mfd_data *simple_mfd_data;
 | |
| @@ -75,6 +84,7 @@ static const struct simple_mfd_data sile
 | |
|  static const struct of_device_id simple_mfd_i2c_of_match[] = {
 | |
|  	{ .compatible = "kontron,sl28cpld" },
 | |
|  	{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
 | |
| +	{ .compatible = "raspberrypi,poe-core", &rpi_poe_core },
 | |
|  	{}
 | |
|  };
 | |
|  MODULE_DEVICE_TABLE(of, simple_mfd_i2c_of_match);
 |