On 22-10-21, 15:06, Markus Schneider-Pargmann wrote: > > > + dp_phy->regs = *(struct regmap **)dev->platform_data; > > > + if (!dp_phy->regs) { > > > + dev_err(dev, "No data passed, requires struct regmap**\n"); > > > + return -EINVAL; > > > + } > > > > is there a reason to do it this way? Why not set the IORESOURCE_MEM for > > this device and let the driver map here? > > > > NO clocks? > > As briefly mentioned in the commit message, this phy is not a dedicated > phy. It is embedded in the DisplayPort controller that is added in patch > 7 of this series. The registerspace of the DisplayPort controller starts > at offset 0x0, continues with 0x1000 for PHY related functions and goes > on with encoder related and other registers at 0x2000, 0x3000 and > 0x4000. > > As this seems to me to be a single function block (also from what I read > from the datasheet), I designed the binding documentation so that the > DisplayPort controller starts at 0x0 and spans all registers. Based on > that I wanted to share the regmap created in the DisplayPort controller > with this PHY driver that is a direct child of that driver, similar to > multi function device drivers. > > That also means that the PHY does not have any clocks it requires as it > only exists in the context of the DisplayPort controller. I could pass > the same clocks to the PHY, but the use of these clocks does not make > any difference. Okay, that sounds sensible > As I don't have a piece of devicetree, I struggled with using phy_get > as, if I understand it correctly, it uses the devicetree to find the > correct PHY device? Not really, device tree is one of the backends phy_get() relies on. If you are having issues, then chances are there are bugs somewhere or usage is incorrect > Do you have a suggestion on how I could improve this interaction between > DP controller and PHY? Maybe some driver that I could look at that has > similar constraints? I would say use phy_get() and fix if we have any issues around it, that should make it much cleaner to use -- ~Vinod