Messages in this thread | | | Date | Wed, 3 Feb 2016 10:03:41 -0800 | From | David Daney <> | Subject | Re: [PATCH v2] MIPS: Octeon: Add Octeon III CN7xxx interface detection |
| |
On 02/03/2016 10:01 AM, Zubair Lutfullah Kakakhel wrote: > Add basic CN7XXX interface detection. > > This allows the kernel to boot with ethernet working as it initializes > the ethernet ports with SGMII instead of defaulting to RGMII routines. > > Tested on the utm8 from Rhino Labs with a CN7130. > > Signed-off-by: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
Acked-by: David Daney <david.daney@cavium.com>
> > --- > V1 -> V2 > - Rebase to v4.5-rc2 > - Used switch instead of too many if-else. > - Change subject from XXX to xxx as lkml bounced the mail.. ¯\_(ツ)_/¯ > --- > arch/mips/cavium-octeon/executive/cvmx-helper.c | 43 +++++++++++++++++++++++++ > 1 file changed, 43 insertions(+) > > diff --git a/arch/mips/cavium-octeon/executive/cvmx-helper.c b/arch/mips/cavium-octeon/executive/cvmx-helper.c > index 376701f..ff26d02 100644 > --- a/arch/mips/cavium-octeon/executive/cvmx-helper.c > +++ b/arch/mips/cavium-octeon/executive/cvmx-helper.c > @@ -87,6 +87,8 @@ int cvmx_helper_get_number_of_interfaces(void) > return 9; > if (OCTEON_IS_MODEL(OCTEON_CN56XX) || OCTEON_IS_MODEL(OCTEON_CN52XX)) > return 4; > + if (OCTEON_IS_MODEL(OCTEON_CN7XXX)) > + return 5; > else > return 3; > } > @@ -260,6 +262,41 @@ static cvmx_helper_interface_mode_t __cvmx_get_mode_octeon2(int interface) > } > > /** > + * @INTERNAL > + * Return interface mode for CN7XXX. > + */ > +static cvmx_helper_interface_mode_t __cvmx_get_mode_cn7xxx(int interface) > +{ > + union cvmx_gmxx_inf_mode mode; > + > + mode.u64 = cvmx_read_csr(CVMX_GMXX_INF_MODE(interface)); > + > + switch (interface) { > + case 0: > + case 1: > + switch (mode.cn68xx.mode) { > + case 0: > + return CVMX_HELPER_INTERFACE_MODE_DISABLED; > + case 1: > + case 2: > + return CVMX_HELPER_INTERFACE_MODE_SGMII; > + case 3: > + return CVMX_HELPER_INTERFACE_MODE_XAUI; > + default: > + return CVMX_HELPER_INTERFACE_MODE_SGMII; > + } > + case 2: > + return CVMX_HELPER_INTERFACE_MODE_NPI; > + case 3: > + return CVMX_HELPER_INTERFACE_MODE_LOOP; > + case 4: > + return CVMX_HELPER_INTERFACE_MODE_RGMII; > + default: > + return CVMX_HELPER_INTERFACE_MODE_DISABLED; > + } > +} > + > +/** > * Get the operating mode of an interface. Depending on the Octeon > * chip and configuration, this function returns an enumeration > * of the type of packet I/O supported by an interface. > @@ -278,6 +315,12 @@ cvmx_helper_interface_mode_t cvmx_helper_interface_get_mode(int interface) > return CVMX_HELPER_INTERFACE_MODE_DISABLED; > > /* > + * OCTEON III models > + */ > + if (OCTEON_IS_MODEL(OCTEON_CN7XXX)) > + return __cvmx_get_mode_cn7xxx(interface); > + > + /* > * Octeon II models > */ > if (OCTEON_IS_MODEL(OCTEON_CN6XXX) || OCTEON_IS_MODEL(OCTEON_CNF71XX)) >
| |