1
0
Fork 0

greybus: interface: add ES2 init-status quirk flag

Add ES2 init-status quirk flag instead of checking MID/PID directly.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
hifive-unleashed-5.1
Johan Hovold 2016-03-29 18:56:09 -04:00 committed by Greg Kroah-Hartman
parent 153ff7e76d
commit 7d7acc06a0
2 changed files with 8 additions and 6 deletions

View File

@ -78,6 +78,11 @@ static int gb_interface_read_dme(struct gb_interface *intf)
if (ret) if (ret)
return ret; return ret;
if (intf->ddbl1_manufacturer_id == TOSHIBA_DMID &&
intf->ddbl1_product_id == TOSHIBA_ES2_BRIDGE_DPID) {
intf->quirks |= GB_INTERFACE_QUIRK_NO_INIT_STATUS;
}
return gb_interface_read_ara_dme(intf); return gb_interface_read_ara_dme(intf);
} }
@ -155,17 +160,13 @@ static int gb_interface_read_and_clear_init_status(struct gb_interface *intf)
u32 value; u32 value;
u16 attr; u16 attr;
u8 init_status; u8 init_status;
bool es2_bridge;
es2_bridge = intf->ddbl1_manufacturer_id == ES2_DDBL1_MFR_ID &&
intf->ddbl1_product_id == ES2_DDBL1_PROD_ID;
/* /*
* ES2 bridges use T_TstSrcIncrement for the init status. * ES2 bridges use T_TstSrcIncrement for the init status.
* *
* FIXME: Remove ES2 support * FIXME: Remove ES2 support
*/ */
if (es2_bridge) if (intf->quirks & GB_INTERFACE_QUIRK_NO_INIT_STATUS)
attr = DME_ATTR_T_TST_SRC_INCREMENT; attr = DME_ATTR_T_TST_SRC_INCREMENT;
else else
attr = DME_ATTR_ES3_INIT_STATUS; attr = DME_ATTR_ES3_INIT_STATUS;
@ -192,7 +193,7 @@ static int gb_interface_read_and_clear_init_status(struct gb_interface *intf)
* *
* FIXME: Remove ES2 support * FIXME: Remove ES2 support
*/ */
if (es2_bridge) if (intf->quirks & GB_INTERFACE_QUIRK_NO_INIT_STATUS)
init_status = value & 0xff; init_status = value & 0xff;
else else
init_status = value >> 24; init_status = value >> 24;

View File

@ -12,6 +12,7 @@
#define GB_INTERFACE_QUIRK_NO_CPORT_FEATURES BIT(0) #define GB_INTERFACE_QUIRK_NO_CPORT_FEATURES BIT(0)
#define GB_INTERFACE_QUIRK_NO_INTERFACE_VERSION BIT(1) #define GB_INTERFACE_QUIRK_NO_INTERFACE_VERSION BIT(1)
#define GB_INTERFACE_QUIRK_NO_INIT_STATUS BIT(2)
struct gb_interface { struct gb_interface {
struct device dev; struct device dev;