[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <56B240FD.4090400@caviumnetworks.com>
Date: Wed, 3 Feb 2016 10:03:41 -0800
From: David Daney <ddaney@...iumnetworks.com>
To: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@...tec.com>
CC: <david.daney@...ium.com>, <janne.huttunen@...ia.com>,
<aaro.koskinen@...ia.com>, <ralf@...ux-mips.org>,
<linux-mips@...ux-mips.org>, <linux-kernel@...r.kernel.org>
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@...tec.com>
Acked-by: David Daney <david.daney@...ium.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))
>
Powered by blists - more mailing lists