On 18/03/2025 14:51, Andrew Lunn wrote: > On Tue, Mar 18, 2025 at 05:34:08AM +0000, Jacky Chou wrote: >> Hi Andrew, >> >> Thank you for your reply. >> >>>> The RGMII delay of AST2600 has a lot of steps can be configured. >>> >>> Are they uniformly space? Then it should be a simple formula to calculate? Or >>> a lookup table? >> >> There are fixed delay values by step. I list below. >> AST2600 MAC0/1 one step delay = 45 ps >> AST2600 MAC2/3 one step delay = 250 ps > > That is messy. > >> I calculate all step and emulate them. >> The dt-binding will be like below. >> rx-internal-delay-ps: >> description: >> Setting this property to a non-zero number sets the RX internal delay >> for the MAC. ... skip ... >> enum: >> [45, 90, 135, 180, 225, 250, 270, 315, 360, 405, 450, 495, 500, 540, 585, 630, 675, >> 720, 750, 765, 810, 855, 900, 945, 990, 1000, 1035, 1080, 1125, 1170, 1215, 1250, >> 1260, 1305, 1350, 1395, 1440, 1500, 1750, 2000, 2250, 2500, 2750, 3000, 3250, 3500, >> 3750, 4000, 4250, 4500, 4750, 5000, 5250, 5500, 5750, 6000, 6250, 6500, 6750, 7000, >> 7250, 7500, 7750, 8000] > > Can the hardware do 0 ps? > > So this list is a superset of both 45ps and 250ps steps? git grep multipleOf: e.g. oneOf: - minimum: 45 maximum: ... multipleOf: 45 - minimum: 1500 maximum: ... multipleOf: 250 > > Lets see what the DT Maintainers say, but it could be you need two > different compatibles for mac0/1 to mac2/3 because they are not > actually compatible! You can then have a list per compatible. If this is the only, *only* difference, then just go with vendor property matching register value... but oh, wait, how person reading and writing the DTS would understand if "0x2" means 90 ps or 1750 ps? I don't see how the original binding was helping here in total. Just moving the burden from driver developer to DTS developer. :/ If different instances are not the same, means the devices are not the same, so two compatibles seem reasonable. Best regards, Krzysztof