Hi Maxime, On Tue, Aug 16, 2022 at 4:11 PM Maxime Ripard <maxime@xxxxxxxxxx> wrote: > On Tue, Aug 16, 2022 at 03:29:07PM +0200, Geert Uytterhoeven wrote: > > On Tue, Aug 16, 2022 at 3:20 PM Maxime Ripard <maxime@xxxxxxxxxx> wrote: > > > On Fri, Aug 12, 2022 at 03:25:18PM +0200, Geert Uytterhoeven wrote: > > > > > --- a/drivers/gpu/drm/drm_connector.c > > > > > +++ b/drivers/gpu/drm/drm_connector.c > > > > > @@ -1649,11 +1650,40 @@ EXPORT_SYMBOL(drm_mode_create_tv_margin_properties); > > > > > * 0 on success or a negative error code on failure. > > > > > */ > > > > > int drm_mode_create_tv_properties(struct drm_device *dev, > > > > > + unsigned int supported_tv_norms, > > > > > unsigned int num_modes, > > > > > const char * const modes[]) > > > > > { > > > > > + static const struct drm_prop_enum_list tv_norm_values[] = { > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_NTSC_443) - 1, "NTSC-443" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_NTSC_J) - 1, "NTSC-J" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_NTSC_M) - 1, "NTSC-M" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_60) - 1, "PAL-60" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_B) - 1, "PAL-B" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_D) - 1, "PAL-D" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_G) - 1, "PAL-G" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_H) - 1, "PAL-H" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_I) - 1, "PAL-I" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_M) - 1, "PAL-M" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_N) - 1, "PAL-N" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_PAL_NC) - 1, "PAL-Nc" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_60) - 1, "SECAM-60" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_B) - 1, "SECAM-B" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_D) - 1, "SECAM-D" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_G) - 1, "SECAM-G" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_K) - 1, "SECAM-K" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_K1) - 1, "SECAM-K1" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_SECAM_L) - 1, "SECAM-L" }, > > > > > > > > The above are analog standards, with a variable horizontal resolution. > > > > > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD480I) - 1, "hd480i" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD480P) - 1, "hd480p" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD576I) - 1, "hd576i" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD576P) - 1, "hd576p" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD720P) - 1, "hd720p" }, > > > > > + { __builtin_ffs(DRM_MODE_TV_NORM_HD1080I) - 1, "hd1080i" }, > > > > > > > > The above are digital standards, with a fixed resolution. > > > > > > Are they? > > > > > > It's not clear to me from looking at nouveau, but I was under the > > > impression that they were modes for a component output, so CEA 770.3. I > > > don't have the spec though, so I can't check. > > > > Oh right, I forgot about analog HD over component, where you can use > > other pixel clocks than in the digital standard. > > > > > > You seem to have missed "hd1080p"? > > > > > > Nobody is using it. If we ever have a driver that uses it I think we can > > > add it. > > > > The PS3 supports 1080p over component > > https://manuals.playstation.net/document/en/ps3/current/settings/videooutput.html > > Yeah, and iirc the Xbox360 did too, but what I meant by nobody is using > it is that there's no driver using it currently. OK, it can be added later. > > > > In addition, "hd720p", "hd080i", and "hd1080p" are available in both 50 > > > > and 60 (actually 59.94) Hz, while "hd1080p" can also use 24 or 25 Hz. > > > > > > It looks like nouveau only exposes modes for 480p at 59.94Hz, 576p at > > > 50Hz, 720p at 60Hz, 1080i at 30Hz. > > > > PS3 supports both 50 and 60 Hz (same link above). > > I'm probably wary on this, but I'd rather stay at feature parity for > this series. There's already plenty of occasion to screw up something > that I'd rather not introduce new stuff I haven't been able to test :) > > Provided we can easily extend it to support these additional features of > course :) > > > > > Either you have to add them here (e.g. "hd720p50" and "hd720p60"), or > > > > handle them through "@<refresh>". The latter would impact "[PATCH v1 > > > > 09/35] drm/modes: Move named modes parsing to a separate function", as > > > > currently a named mode and a refresh rate can't be specified both. > > > > > > I think the former would make more sense. It simplifies a bit the > > > parser, and we're going to use a named mode anyway. > > > > > > > As "[PATCH v1 34/35] drm/modes: Introduce the tv_mode property as a > > > > command-line option" uses a separate "tv_mode" option, and not the main > > > > mode name, I think you want to add them here. > > > > > > It's a separate story I think, we could have a named mode hd720p50, > > > which would be equivalent to 1280x720,tv_mode=hd720p > > > > So where's the field rate in "1280x720,tv_mode=hd720p"? > > Yeah, sorry I meant 1280x720@50,tv_mode=hd720p Above you said "I think the former would make more sense", so that should be "1280x720,tv_mode=hd720p50"? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds