[PATCH 1/3] phy: marvell: cp110: let the firmware configure the comphy
Stefan Roese
sr at denx.de
Tue Oct 20 09:20:30 CEST 2020
On 18.10.20 21:43, Marek Behun wrote:
> On Sun, 18 Oct 2020 17:11:11 +0300
> Baruch Siach <baruch at tkos.co.il> wrote:
>
>> From: Grzegorz Jaszczyk <jaz at semihalf.com>
>>
>> Replace all comphy initialization with appropriate smc calls. It will
>> result with triggering synchronous exception that is handled by Secure
>> Monitor code in EL3. Then the Secure Monitor code will dispatch each smc
>> call (by parsing the smc function identifier) and triggers appropriate
>> comphy initialization.
>>
>> This patch reworks serdes handling for: SATA, SGMII, HS-SGMII and SFI
>> interfaces.
>>
>> Signed-off-by: Grzegorz Jaszczyk <jaz at semihalf.com>
>> Reviewed-by: Igal Liberman <igall at marvell.com>
>> Signed-off-by: Baruch Siach <baruch at tkos.co.il>
>> ---
>> drivers/phy/marvell/comphy_cp110.c | 816 ++++-------------------------
>> 1 file changed, 89 insertions(+), 727 deletions(-)
>>
>> diff --git a/drivers/phy/marvell/comphy_cp110.c b/drivers/phy/marvell/comphy_cp110.c
>> index 15e80049def6..31baa0bb3700 100644
>> --- a/drivers/phy/marvell/comphy_cp110.c
>> +++ b/drivers/phy/marvell/comphy_cp110.c
>> @@ -7,6 +7,7 @@
>> #include <fdtdec.h>
>> #include <log.h>
>> #include <asm/io.h>
>> +#include <asm/ptrace.h>
>> #include <asm/arch/cpu.h>
>> #include <asm/arch/soc.h>
>> #include <linux/delay.h>
>> @@ -22,6 +23,32 @@ DECLARE_GLOBAL_DATA_PTR;
>> #define HPIPE_ADDR(base, lane) (SD_ADDR(base, lane) + 0x800)
>> #define COMPHY_ADDR(base, lane) (base + 0x28 * lane)
>>
>> +/* Firmware related definitions used for SMC calls */
>> +#define MV_SIP_COMPHY_POWER_ON 0x82000001
>> +#define MV_SIP_COMPHY_POWER_OFF 0x82000002
>> +#define MV_SIP_COMPHY_PLL_LOCK 0x82000003
>> +
>> +#define COMPHY_FW_MODE_FORMAT(mode) ((mode) << 12)
>> +#define COMPHY_FW_FORMAT(mode, idx, speeds) \
>> + (((mode) << 12) | ((idx) << 8) | ((speeds) << 2))
>> +#define COMPHY_SATA_MODE 0x1
>> +#define COMPHY_SGMII_MODE 0x2 /* SGMII 1G */
>> +#define COMPHY_HS_SGMII_MODE 0x3 /* SGMII 2.5G */
>> +#define COMPHY_USB3H_MODE 0x4
>> +#define COMPHY_USB3D_MODE 0x5
>> +#define COMPHY_PCIE_MODE 0x6
>> +#define COMPHY_RXAUI_MODE 0x7
>> +#define COMPHY_XFI_MODE 0x8
>> +#define COMPHY_SFI_MODE 0x9
>> +#define COMPHY_USB3_MODE 0xa
>> +#define COMPHY_AP_MODE 0xb
>
> These same constants can be used for Armada 3720, btw... And maybe even
> the code itself. So if this works, after it is applied I will try to
> make this driver support Armada 3720 as well.
Good.
> BTW, my opinion on using firmware calls in kernel for this changed
> recently, when encountering problems on EspressoBIN which were result
> of many people simply not upgrading the firmware... I now think kernel
> should not depend on the firmware for this and implement this on its
> own... But I think U-Boot is ok.
I'm okay with these patches in general as well, but I would like to see
some users testing them on their Armada 7k/8k boards. Marek?
Thanks,
Stefan
More information about the U-Boot
mailing list