RTL8367B_CHIP_RTL8367R_VB, /* chip with exception in extif assignment */
/* Family C */
RTL8367B_CHIP_RTL8367RB_VB,
- RTL8367B_CHIP_RTL8367S
+ RTL8367B_CHIP_RTL8367S,
+/* Family D */
+ RTL8367B_CHIP_RTL8367S_VB /* chip with exception in extif assignment */
} rtl8367b_chip_t;
struct rtl8366_mib_counter {
/*
* Platform driver for Realtek RTL8367B family chips, i.e. RTL8367RB and RTL8367R-VB
* extended with support for RTL8367C family chips, i.e. RTL8367RB-VB and RTL8367S
+ * extended with support for RTL8367D family chips, i.e. RTL8367S-VB
*
* Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
*
break;
case RTL8367B_CHIP_RTL8367RB_VB:
case RTL8367B_CHIP_RTL8367S:
+ case RTL8367B_CHIP_RTL8367S_VB:
initvals = rtl8367c_initvals;
count = ARRAY_SIZE(rtl8367c_initvals);
break;
err = -EINVAL;
goto err_init;
}
+ } else if (smi->rtl8367b_chip == RTL8367B_CHIP_RTL8367S_VB) { /* for the RTL8367S-VB chip, cpu_port 7 corresponds to extif1, cpu_port 6 corresponds to extif0 */
+ if (cpu_port != RTL8367B_CPU_PORT_NUM) {
+ id = cpu_port - RTL8367B_CPU_PORT_NUM - 1;
+ } else {
+ dev_err(smi->parent, "wrong cpu_port %u in %s property\n", cpu_port, name);
+ err = -EINVAL;
+ goto err_init;
+ }
} else {
id = cpu_port - RTL8367B_CPU_PORT_NUM;
}
}
switch (chip_ver) {
+ case 0x0010:
+ if (chip_num == 0x6642) {
+ chip_name = "8367S-VB";
+ smi->rtl8367b_chip = RTL8367B_CHIP_RTL8367S_VB;
+ }
+ break;
case 0x0020:
if (chip_num == 0x6367) {
chip_name = "8367RB-VB";