mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-10-31 05:54:26 -04:00 
			
		
		
		
	Signed-off-by: David Bauer <mail@david-bauer.net> [refreshed] Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> * Sync the patches with the changes done for kernel 4.19 * Use KERNEL_TESTING_PATCHVER * Refresh the configuration * Fix multiple compile bugs in the patches * Only add own ag71xx files for kernel 4.19 and use upstream version for 5.4. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 694f9bfb8efaef8a33e8992015ff9d0866faf4a2 Mon Sep 17 00:00:00 2001
 | |
| From: Christian Lamparter <chunkeey@gmail.com>
 | |
| Date: Sun, 17 Dec 2017 17:27:15 +0100
 | |
| Subject: [PATCH 1/2] hwmon: tc654 add detection routine
 | |
| 
 | |
| This patch adds a detection routine for the TC654/TC655
 | |
| chips.  Both IDs are listed in the Datasheet.
 | |
| 
 | |
| Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
 | |
| ---
 | |
|  drivers/hwmon/tc654.c | 29 +++++++++++++++++++++++++++++
 | |
|  1 file changed, 29 insertions(+)
 | |
| 
 | |
| --- a/drivers/hwmon/tc654.c
 | |
| +++ b/drivers/hwmon/tc654.c
 | |
| @@ -55,6 +55,11 @@ enum tc654_regs {
 | |
|  /* Register data is read (and cached) at most once per second. */
 | |
|  #define TC654_UPDATE_INTERVAL		HZ
 | |
|  
 | |
| +/* Manufacturer and Version Identification Register Values */
 | |
| +#define TC654_MFR_ID_MICROCHIP		0x84
 | |
| +#define TC654_VER_ID			0x00
 | |
| +#define TC655_VER_ID			0x01
 | |
| +
 | |
|  struct tc654_data {
 | |
|  	struct i2c_client *client;
 | |
|  
 | |
| @@ -482,6 +487,29 @@ static const struct i2c_device_id tc654_
 | |
|  	{}
 | |
|  };
 | |
|  
 | |
| +static int
 | |
| +tc654_detect(struct i2c_client *new_client, struct i2c_board_info *info)
 | |
| +{
 | |
| +	struct i2c_adapter *adapter = new_client->adapter;
 | |
| +	int manufacturer, product;
 | |
| +
 | |
| +	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
 | |
| +		return -ENODEV;
 | |
| +
 | |
| +	manufacturer = i2c_smbus_read_byte_data(new_client, TC654_REG_MFR_ID);
 | |
| +	if (manufacturer != TC654_MFR_ID_MICROCHIP)
 | |
| +		return -ENODEV;
 | |
| +
 | |
| +	product = i2c_smbus_read_byte_data(new_client, TC654_REG_VER_ID);
 | |
| +	if (!((product == TC654_VER_ID) || (product == TC655_VER_ID)))
 | |
| +		return -ENODEV;
 | |
| +
 | |
| +	strlcpy(info->type, product == TC654_VER_ID ? "tc654" : "tc655",
 | |
| +		I2C_NAME_SIZE);
 | |
| +	return 0;
 | |
| +}
 | |
| +
 | |
| +
 | |
|  MODULE_DEVICE_TABLE(i2c, tc654_id);
 | |
|  
 | |
|  static struct i2c_driver tc654_driver = {
 | |
| @@ -490,6 +518,7 @@ static struct i2c_driver tc654_driver =
 | |
|  		   },
 | |
|  	.probe = tc654_probe,
 | |
|  	.id_table = tc654_id,
 | |
| +	.detect = tc654_detect,
 | |
|  };
 | |
|  
 | |
|  module_i2c_driver(tc654_driver);
 |