This patch copies over refreshed patches from 5.4. - dropped crypto patches (they got upstreamed) - dropped renesas USB 3 firmware loader (they got upstreamed) - NAND now needs extra device-properties for ECC settings. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
		
			
				
	
	
		
			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;
 | 
						|
 
 | 
						|
@@ -481,6 +486,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 = {
 | 
						|
@@ -489,6 +517,7 @@ static struct i2c_driver tc654_driver =
 | 
						|
 		   },
 | 
						|
 	.probe_new = tc654_probe,
 | 
						|
 	.id_table = tc654_id,
 | 
						|
+	.detect = tc654_detect,
 | 
						|
 };
 | 
						|
 
 | 
						|
 module_i2c_driver(tc654_driver);
 |