On Tue, Jul 20, 2010 at 7:03 PM, Afzal Mohammed <lazfamam@xxxxxxxxx> wrote: > Hi Sergey, > Can you please enable debug prints & send the logs. And is the display > driver file complete ?, omap_dss_driver isn't registered in it. Debug output is attached. Yeah, I omitted module registration part, I have it: static int __init panel_init(void) { return omap_dss_register_driver(&hx8340_panel_driver); } static void __exit panel_exit(void) { } module_init(hx8340_init); module_exit(hx8340_exit); > All, > BTW, is there any working RFBI display with DSS2 of mainline kernel ? As I see, no. > Regards > Afzal > > On Tue, Jul 20, 2010 at 7:36 PM, Sergey Lapin <slapinid@xxxxxxxxx> wrote: >> >> Hi, all! >> >> I'm trying to rewrite my old driver to DSS2. The driver is for small >> 176x220 module attached over RFBI interface >> on OMAP3525. It basically works with old kernel and drivers/video/omap/*. >> >> I still can't make it work, so is it known which code is necessary to >> initialize a panel? I tried >> to compare APIs with old and new subsystems and can't see what I am doing >> wrong. >> >> In original code, I just init rfbi and dispc, and then directly write >> to panel (commands and their parameters). >> >> The same code with new API does not seem to produce any results. >> Display stays uninitialized, >> so commands seem not to get to it. >> >> The code: >> ... >> >> static struct omap_video_timings panel_timings = { >> .x_res = 176, >> .y_res = 220, >> }; >> >> static int panel_probe(struct omap_dss_device *dssdev) >> { >> int err; >> struct rfbi_timings t; >> pr_debug("%s\n", __func__); >> dssdev->panel.config = OMAP_DSS_LCD_TFT | >> OMAP_DSS_LCD_IVS | OMAP_DSS_LCD_IHS; >> dssdev->panel.timings = panel_timings; >> dssdev->phy.rfbi.channel = 0; >> dssdev->ctrl.pixel_size = 24; >> dssdev->phy.rfbi.data_lines = 8; >> hx8340_dss = dssdev; >> >> t.cs_on_time = 0; >> t.we_on_time = t.cs_on_time + 0; >> t.re_on_time = t.we_on_time + 0; >> t.we_off_time = t.we_on_time + 15000; >> t.re_off_time = t.we_off_time + 15000; >> t.access_time = 0; >> t.cs_off_time = t.we_off_time + 0; >> t.we_cycle_time = t.cs_off_time + 10000; >> t.re_cycle_time = t.we_cycle_time + 15000; >> t.cs_pulse_width = 41000; >> dssdev->ctrl.rfbi_timings = t; >> if (dssdev->platform_enable) >> dssdev->platform_enable(dssdev); >> ..... >> return 0; >> } >> static void cmd_data(u8 cmd, u8 data) >> { >> omap_rfbi_write_command(&cmd, 1); >> omap_rfbi_write_data(&data, 1); >> } >> >> static int panel_power_on(struct omap_dss_device *dssdev) >> { >> int err; >> err = omapdss_rfbi_display_enable(dssdev); >> if (err < 0) >> return err; >> if (dssdev->platform_enable) { >> err = dssdev->platform_enable(dssdev); >> if (err) >> return err; >> } >> cmd_data(0x18, 0x44); >> cmd_data(0x1B, 0x44); >> ..... >> >> return 0; >> } >> static int panel_enable(struct omap_dss_device *dssdev) >> { >> panel_power_on(dssdev); >> dssdev->state = OMAP_DSS_DISPLAY_ACTIVE; >> return 0; >> } >> ... >> static void panel_get_timings(struct omap_dss_device *dssdev, >> struct omap_video_timings *timings) >> { >> *timings = dssdev->panel.timings; >> } >> >> static int panel_check_timings(struct omap_dss_device *dssdev, >> struct omap_video_timings *timings) >> { >> return 0; >> } >> struct omap_dss_driver hx8340_panel_driver = { >> .probe = panel_probe, >> .... >> .enable = panel_enable, >> ... >> .get_timings = panel_get_timings, >> .check_timings = panel_check_timings, >> ... >> .driver = { >> .name = "custom-panel", >> .owner = THIS_MODULE, >> }, >> }; >> >> Any ideas on what is wrong with initialization? >> Driver works with old susbystem, but it is very messed-up and requires >> patching of subsystem itself. >> I skip timer-based auto-update setup here, because I want to make >> initialization work first and then move >> to that portion later. >> >> Thanks a lot, >> S. >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-omap" in >> the body of a message to majordomo@xxxxxxxxxxxxxxx >> More majordomo info at http://vger.kernel.org/majordomo-info.html > >
Attachment:
minicom.cap
Description: application/cap