Re: Re: [RFC PATCH 1/1] mv88e6xxx: Cache scratch config of 6352 in setup
From: Fidan Aliyeva
Date: Fri May 15 2026 - 10:51:23 EST
> > In mv88e6352 scratch register in Global Control 2 set of registers
> > returns which port is attached to SERDES. This value is set and stays
> > constant after the switch is released from reset; thus, it can be
> > cached during chip setup instead of reading the register everytime
> > when SERDES config is needed.
> >
> > 1. Add setup_chip_specific member to mv88e6xxx_ops and
> > g2_scratch_config3 member to mv88e6xxx_chip.
> > 2. Add mv88e6352_g2_cache_global_scratch_config3 function as
> > .setup_chip_specific which reads the CONFIG3 value from the scratch
> > register and caches it.
> > 3. Call .setup_chip_specific during chip setup.
> > 4. Refactor mv88e6352_g2_scratch_port_has_serdes to use the cached
> > value.
> > 5. Remove the locks surrounding mv88e6352_g2_scratch_port_has_serdes.
> > Not needed anymore since no register access in the function.
>
> We ask for lots of small patches which are obviously correct and have good commit messages.
>
> It seems like you could break this up into smaller patches. Taking to account my other comment, how about 4 Patches:
>
> 1) Add mv88e6532_reset() which simply called mv88e6532_g1_reset(), and make use of it for the 6352 family ops structure.
>
> 2) add g2_scratch_config3 member to mv88e6xxx_chip, add a helper to read the register, and call it from mv88e6532_reset().
>
> 3) Rework mv88e6352_g2_scratch_port_has_serdes() to use the cached value.
>
> 4) Remove the locks.
>
> Andrew
Hi Andrew,
Thank you for your recommendations. I'll send v2 of the patch soon.
I have one more question; now that mv88e6352_g2_scratch_port_has_serdes()
never returns a value smaller than 0, should all the callers be aware of
this fact? Shall I change the checks for return value on this function not
to check for <0 ? All the callers except 1 will be refactored to use
serdes_get_lane function later, so it might be unnecessary.
Thank you in advance.
Best,
Fidan.