On 2/5/22 14:04, Andy Shevchenko wrote:
On Fri, Feb 04, 2022 at 08:19:12PM +0100, Javier Martinez Canillas wrote:
On 2/4/22 15:26, Andy Shevchenko wrote:
On Fri, Feb 04, 2022 at 02:43:45PM +0100, Javier Martinez Canillas wrote:
...
+struct ssd130x_device {
- struct drm_device drm;
- struct drm_simple_display_pipe pipe;
- struct drm_display_mode mode;
- struct drm_connector connector;
- struct i2c_client *client;
Can we logically separate hw protocol vs hw interface from day 1, please? This will allow to add SPI support for this panel much easier.
Technically I would like to see here
struct device *dev;
and probably (I haven't looked into design)
struct ssd130x_ops *ops;
or something alike.
Sure. I wanted to keep the driver simple, making the writes bus agnostic and adding a level of indirection would make it more complex. But I agree that it will also make easier to add more buses later. I will do that for v3.
I have SSD1306 display with SPI interface and I'm not able to test your series. With the above it at least gives me a point to consider helping (coding and testing) with SPI one.
Yes, I understand that. On the other hand, I only have a SSD1306 with an I2C interface so I'm interested in supporting that. Then someone could extend to support other buses :)
But I agree with you that making the driver easier to extend and using regmap would be desirable. In fact, since I will add the level of indirection I can got ahead and attempt to add the SPI support as well.
I won't be able to test but I can use drivers/staging/fbtft/fb_ssd1306.c as a reference for this.
...
- if (!fb)
return;
Can it happen?
I don't know, but saw that the handler of other drivers checked for this so preferred to play safe and do the same.
So, either cargo-cult or indeed it may happen. Somebody may conduct a research on this...
Someone familiar with the simple display pipe helpers should chime in, I tried to grep around but couldn't figure out whether it was safe or not to assume the struct drm_framebuffer won't ever be NULL in a struct drm_shadow_plane_state.
As mentioned other drivers were doing and I preferred to be defensive rather than leading to a possible NULL pointer dereference.
...
- drm_mode_probed_add(connector, mode);
- drm_set_preferred_mode(connector, mode->hdisplay, mode->vdisplay);
- return 1;
Positive code, what is the meaning of it?
It's the number of connector modes. The driver only supports 1.
A comment then?
Yes, that makes sense.
Best regards,