On Tue, May 20, 2014 at 03:56:15PM +0200, Benjamin Gaignard wrote:
Add driver to support analog TV ouput.
Unfortunate that this has the same abbreviation as High-Definition Audio...
diff --git a/drivers/gpu/drm/sti/sti_hda.c b/drivers/gpu/drm/sti/sti_hda.c
[...]
+/* Video DACs control */ +#define VIDEO_DACS_CONTROL_MASK 0x0FFF +#define VIDEO_DACS_CONTROL_SYSCFG2535 0x085C /* for stih416 */ +#define DAC_CFG_HD_OFF_SHIFT 5 +#define DAC_CFG_HD_OFF_MASK (0x7 << DAC_CFG_HD_OFF_SHIFT) +#define VIDEO_DACS_CONTROL_SYSCFG5072 0x0120 /* for stih407 */
syscfg is starting to look more and more like it could be a syscon driver or some other specialized, platform-specific driver.
+/* Index (in supported modes table) of the preferred video mode */ +#define HDA_PREF_MODE_IDX 0
I don't think this symbolic name is particularly useful.
+/* Reference to the hda device */ +struct device *hda_dev;
This shouldn't be needed.
+static void sti_hda_configure_awg(struct sti_hda *hda, u32 *awg_instr, int nb) +{
- int i;
unsigned
+/*
- Get modes
- @drm_connector: pointer on the drm connector
- Return number of modes
- */
+static int sti_hda_get_modes(struct drm_connector *drm_connector) +{
- struct drm_device *dev = drm_connector->dev;
- struct drm_display_mode *mode;
- int i, count;
unsigned for i. count should probably stay signed since DRM uses that throughout.
- DRM_DEBUG_DRIVER("\n");
- for (i = 0, count = 0; i < ARRAY_SIZE(hda_supported_modes); i++) {
You can initialize count when it's declared to make the loop more idiomatic.
mode = drm_mode_duplicate(dev, &hda_supported_modes[i].mode);if (!mode)continue;mode->vrefresh = drm_mode_vrefresh(mode);/* Set the preferred mode */if (i == HDA_PREF_MODE_IDX)mode->type |= DRM_MODE_TYPE_PREFERRED;drm_mode_probed_add(drm_connector, mode);count++;- }
- drm_mode_sort(&drm_connector->modes);
- return count;
+}
Gratuituous newline.
+static int sti_hda_probe(struct platform_device *pdev) +{
[...]
+}
+static int sti_hda_remove(struct platform_device *pdev) +{
[...]
+}
+static struct of_device_id hda_match_types[] = {
- {
.compatible = "st,stih416-hda",},- {
.compatible = "st,stih407-hda",},- { /* end node */ }
+}; +MODULE_DEVICE_TABLE(of, hda_match_types);
+struct platform_driver sti_hda_driver = {
- .driver = {
.name = "sti-hda",.owner = THIS_MODULE,.of_match_table = hda_match_types,},- .probe = sti_hda_probe,
- .remove = sti_hda_remove,
+};
+module_platform_driver(sti_hda_driver);
+MODULE_LICENSE("GPL");
Same comments here as for all previous patches.
Thierry