From: Johan Hovold <johan@hovoldconsulting.com>
Date: Tue, 29 Mar 2016 22:56:12 +0000 (-0400)
Subject: greybus: interface: add Ara serial-number support
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=a7be84613acc4f732f3aa9ab28da7e2e3a6bab0b;p=linux.git

greybus: interface: add Ara serial-number support

Add support for reading the Ara serial-number attributes.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
---

diff --git a/drivers/staging/greybus/interface.c b/drivers/staging/greybus/interface.c
index d0542e5a9ac2c..27dbd79d2e19c 100644
--- a/drivers/staging/greybus/interface.c
+++ b/drivers/staging/greybus/interface.c
@@ -24,6 +24,8 @@
 
 #define DME_TOSHIBA_ARA_VID		0x6000
 #define DME_TOSHIBA_ARA_PID		0x6001
+#define DME_TOSHIBA_ARA_SN0		0x6002
+#define DME_TOSHIBA_ARA_SN1		0x6003
 #define DME_TOSHIBA_ARA_INIT_STATUS	0x6101
 
 /* DDBL1 Manufacturer and Product ids */
@@ -42,6 +44,7 @@ static int gb_interface_dme_attr_get(struct gb_interface *intf,
 
 static int gb_interface_read_ara_dme(struct gb_interface *intf)
 {
+	u32 sn0, sn1;
 	int ret;
 
 	/*
@@ -64,8 +67,15 @@ static int gb_interface_read_ara_dme(struct gb_interface *intf)
 	if (ret)
 		return ret;
 
-	/* FIXME: serial number not implemented */
-	intf->serial_number = 0;
+	ret = gb_interface_dme_attr_get(intf, DME_TOSHIBA_ARA_SN0, &sn0);
+	if (ret)
+		return ret;
+
+	ret = gb_interface_dme_attr_get(intf, DME_TOSHIBA_ARA_SN1, &sn1);
+	if (ret)
+		return ret;
+
+	intf->serial_number = (u64)sn1 << 32 | sn0;
 
 	return 0;
 }