Message ID | 4C45BFD7.3060800@canonical.com |
---|---|
State | Accepted |
Delegated to: | Leann Ogasawara |
Headers | show |
On 07/20/2010 05:25 PM, Lee Jones wrote: > From a2f11a44e5834d75611c88af69036cfe26eddf05 Mon Sep 17 00:00:00 2001 > From: Lee Jones<lee.jones@canonical.com> > Date: Tue, 20 Jul 2010 16:54:12 +0200 > Subject: [PATCH] UBUNTU: SAUCE: Enable USB and Ethernet on the XM > > Provide the required setup to enable USB Ethernet (usb0) > and USB host on the XM Beagleboard (A rev). > > Signed-off-by: Lee Jones<lee.jones@canonical.com> > --- > arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > drivers/video/omap2/dss/dispc.c | 4 +- > drivers/video/omap2/dss/dpi.c | 7 +++- > 4 files changed, 85 insertions(+), 14 deletions(-) > > diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c > index 32565dc..7a1b351 100644 > --- a/arch/arm/mach-omap2/board-omap3beagle.c > +++ b/arch/arm/mach-omap2/board-omap3beagle.c > @@ -171,6 +171,11 @@ static void __init beagle_display_init(void) > { > int r; > > + if (cpu_is_omap3630()) > + beagle_dvi_device.reset_gpio = 129; > + else > + beagle_dvi_device.reset_gpio = 170; > + > r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); > if (r< 0) { > printk(KERN_ERR "Unable to get DVI reset GPIO\n"); > @@ -222,12 +227,22 @@ static int beagle_twl_gpio_setup(struct device *dev, > * power switch and overcurrent detect > */ > > - gpio_request(gpio + 1, "EHCI_nOC"); > - gpio_direction_input(gpio + 1); > - > - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > - gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); > + if (cpu_is_omap3630()) { > + gpio_request(gpio + 1, "nDVI_PWR_EN"); > + gpio_direction_output(gpio + 1, 0); > + > + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); > + } > + else { > + gpio_request(gpio + 1, "EHCI_nOC"); > + gpio_direction_input(gpio + 1); > + > + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); > + } > > /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ > gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; > @@ -492,11 +507,6 @@ static void __init omap3_beagle_init(void) > ARRAY_SIZE(omap3_beagle_devices)); > omap_serial_init(); > > - omap_mux_init_gpio(170, OMAP_PIN_INPUT); > - gpio_request(170, "DVI_nPD"); > - /* REVISIT leave DVI powered down until it's needed ... */ > - gpio_direction_output(170, true); > - > usb_musb_init(&musb_board_data); > usb_ehci_init(&ehci_pdata); > omap3beagle_flash_init(); > diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h > index 7514174..5e76126 100644 > --- a/arch/arm/plat-omap/include/plat/cpu.h > +++ b/arch/arm/plat-omap/include/plat/cpu.h > @@ -389,6 +389,62 @@ IS_OMAP_TYPE(3517, 0x3517) > #define OMAP4430_REV_ES1_0 0x44300044 > > /* > + * Silicon revisions > + */ > +#define OMAP_ES_1_0 0x00 > +#define OMAP_ES_2_0 0x10 > +#define OMAP_ES_2_1 0x20 > +#define OMAP_ES_3_0 0x30 > +#define OMAP_ES_3_1 0x40 > + > +#define OMAP_REV_MASK 0x0000ff00 > +#define OMAP_REV_BITS ((omap_rev()& OMAP_REV_MASK)>> 8) > + > +#define OMAP_REV_IS(revid) \ > +static inline u8 omap_rev_is_ ##revid (void) \ > +{ \ > + return (OMAP_REV_BITS == OMAP_ES_ ##revid) ? 1 : 0; \ > +} > + > +#define OMAP_REV_LT(revid) \ > +static inline u8 omap_rev_lt_ ##revid (void) \ > +{ \ > + return (OMAP_REV_BITS< OMAP_ES_ ##revid) ? 1 : 0; \ > +} > + > +#define OMAP_REV_LE(revid) \ > +static inline u8 omap_rev_le_ ##revid (void) \ > +{ \ > + return (OMAP_REV_BITS<= OMAP_ES_ ##revid) ? 1 : 0; \ > +} > + > +#define OMAP_REV_GT(revid) \ > +static inline u8 omap_rev_gt_ ##revid (void) \ > +{ \ > + return (OMAP_REV_BITS> OMAP_ES_ ##revid) ? 1 : 0; \ > +} > + > +#define OMAP_REV_GE(revid) \ > +static inline u8 omap_rev_ge_ ##revid (void) \ > +{ \ > + return (OMAP_REV_BITS>= OMAP_ES_ ##revid) ? 1 : 0; \ > +} > + > +#define OMAP_REV_FUNCTIONS(revid) \ > + OMAP_REV_IS(revid) \ > + OMAP_REV_LT(revid) \ > + OMAP_REV_LE(revid) \ > + OMAP_REV_GT(revid) \ > + OMAP_REV_GE(revid) > + > +OMAP_REV_FUNCTIONS(1_0) > +OMAP_REV_FUNCTIONS(2_0) > +OMAP_REV_FUNCTIONS(2_1) > +OMAP_REV_FUNCTIONS(3_0) > +OMAP_REV_FUNCTIONS(3_1) > + > +/* > + > * omap_chip bits > * > * CHIP_IS_OMAP{2420,2430,3430} indicate that a particular structure is > diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c > index e777e35..6ba87d8 100644 > --- a/drivers/video/omap2/dss/dispc.c > +++ b/drivers/video/omap2/dss/dispc.c > @@ -2111,7 +2111,7 @@ void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) > static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp, > int vsw, int vfp, int vbp) > { > - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { > + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { > if (hsw< 1 || hsw> 64 || > hfp< 1 || hfp> 256 || > hbp< 1 || hbp> 256 || > @@ -2144,7 +2144,7 @@ static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, > { > u32 timing_h, timing_v; > > - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { > + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { > timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | > FLD_VAL(hbp-1, 27, 20); > > diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c > index 960e977..23047b6 100644 > --- a/drivers/video/omap2/dss/dpi.c > +++ b/drivers/video/omap2/dss/dpi.c > @@ -177,7 +177,12 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) > > #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL > dss_clk_enable(DSS_CLK_FCK2); > - r = dsi_pll_init(dssdev, 0, 1); > + > + if (cpu_is_omap3630()) > + r = dsi_pll_init(dssdev, 1, 1); > + else > + r = dsi_pll_init(dssdev, 0, 1); > + > if (r) > goto err3; > #endif So, where does this patch come from? Did you write the whole thing from scratch? rtg
On Tue, Jul 20, 2010 at 11:06 AM, Tim Gardner <tcanonical@tpi.com> wrote: > On 07/20/2010 05:25 PM, Lee Jones wrote: >> From a2f11a44e5834d75611c88af69036cfe26eddf05 Mon Sep 17 00:00:00 2001 >> From: Lee Jones<lee.jones@canonical.com> >> Date: Tue, 20 Jul 2010 16:54:12 +0200 >> Subject: [PATCH] UBUNTU: SAUCE: Enable USB and Ethernet on the XM >> >> Provide the required setup to enable USB Ethernet (usb0) >> and USB host on the XM Beagleboard (A rev). >> >> Signed-off-by: Lee Jones<lee.jones@canonical.com> >> --- >> arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ >> arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ >> drivers/video/omap2/dss/dispc.c | 4 +- >> drivers/video/omap2/dss/dpi.c | 7 +++- >> 4 files changed, 85 insertions(+), 14 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c >> index 32565dc..7a1b351 100644 >> --- a/arch/arm/mach-omap2/board-omap3beagle.c >> +++ b/arch/arm/mach-omap2/board-omap3beagle.c >> @@ -171,6 +171,11 @@ static void __init beagle_display_init(void) >> { >> int r; >> >> + if (cpu_is_omap3630()) >> + beagle_dvi_device.reset_gpio = 129; >> + else >> + beagle_dvi_device.reset_gpio = 170; >> + >> r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); >> if (r< 0) { >> printk(KERN_ERR "Unable to get DVI reset GPIO\n"); >> @@ -222,12 +227,22 @@ static int beagle_twl_gpio_setup(struct device *dev, >> * power switch and overcurrent detect >> */ >> >> - gpio_request(gpio + 1, "EHCI_nOC"); >> - gpio_direction_input(gpio + 1); >> - >> - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ >> - gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); >> - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); >> + if (cpu_is_omap3630()) { >> + gpio_request(gpio + 1, "nDVI_PWR_EN"); >> + gpio_direction_output(gpio + 1, 0); >> + >> + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ >> + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); >> + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); >> + } >> + else { >> + gpio_request(gpio + 1, "EHCI_nOC"); >> + gpio_direction_input(gpio + 1); >> + >> + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ >> + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); >> + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); >> + } >> >> /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ >> gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; >> @@ -492,11 +507,6 @@ static void __init omap3_beagle_init(void) >> ARRAY_SIZE(omap3_beagle_devices)); >> omap_serial_init(); >> >> - omap_mux_init_gpio(170, OMAP_PIN_INPUT); >> - gpio_request(170, "DVI_nPD"); >> - /* REVISIT leave DVI powered down until it's needed ... */ >> - gpio_direction_output(170, true); >> - >> usb_musb_init(&musb_board_data); >> usb_ehci_init(&ehci_pdata); >> omap3beagle_flash_init(); >> diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h >> index 7514174..5e76126 100644 >> --- a/arch/arm/plat-omap/include/plat/cpu.h >> +++ b/arch/arm/plat-omap/include/plat/cpu.h >> @@ -389,6 +389,62 @@ IS_OMAP_TYPE(3517, 0x3517) >> #define OMAP4430_REV_ES1_0 0x44300044 >> >> /* >> + * Silicon revisions >> + */ >> +#define OMAP_ES_1_0 0x00 >> +#define OMAP_ES_2_0 0x10 >> +#define OMAP_ES_2_1 0x20 >> +#define OMAP_ES_3_0 0x30 >> +#define OMAP_ES_3_1 0x40 >> + >> +#define OMAP_REV_MASK 0x0000ff00 >> +#define OMAP_REV_BITS ((omap_rev()& OMAP_REV_MASK)>> 8) >> + >> +#define OMAP_REV_IS(revid) \ >> +static inline u8 omap_rev_is_ ##revid (void) \ >> +{ \ >> + return (OMAP_REV_BITS == OMAP_ES_ ##revid) ? 1 : 0; \ >> +} >> + >> +#define OMAP_REV_LT(revid) \ >> +static inline u8 omap_rev_lt_ ##revid (void) \ >> +{ \ >> + return (OMAP_REV_BITS< OMAP_ES_ ##revid) ? 1 : 0; \ >> +} >> + >> +#define OMAP_REV_LE(revid) \ >> +static inline u8 omap_rev_le_ ##revid (void) \ >> +{ \ >> + return (OMAP_REV_BITS<= OMAP_ES_ ##revid) ? 1 : 0; \ >> +} >> + >> +#define OMAP_REV_GT(revid) \ >> +static inline u8 omap_rev_gt_ ##revid (void) \ >> +{ \ >> + return (OMAP_REV_BITS> OMAP_ES_ ##revid) ? 1 : 0; \ >> +} >> + >> +#define OMAP_REV_GE(revid) \ >> +static inline u8 omap_rev_ge_ ##revid (void) \ >> +{ \ >> + return (OMAP_REV_BITS>= OMAP_ES_ ##revid) ? 1 : 0; \ >> +} >> + >> +#define OMAP_REV_FUNCTIONS(revid) \ >> + OMAP_REV_IS(revid) \ >> + OMAP_REV_LT(revid) \ >> + OMAP_REV_LE(revid) \ >> + OMAP_REV_GT(revid) \ >> + OMAP_REV_GE(revid) >> + >> +OMAP_REV_FUNCTIONS(1_0) >> +OMAP_REV_FUNCTIONS(2_0) >> +OMAP_REV_FUNCTIONS(2_1) >> +OMAP_REV_FUNCTIONS(3_0) >> +OMAP_REV_FUNCTIONS(3_1) >> + >> +/* >> + >> * omap_chip bits >> * >> * CHIP_IS_OMAP{2420,2430,3430} indicate that a particular structure is >> diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c >> index e777e35..6ba87d8 100644 >> --- a/drivers/video/omap2/dss/dispc.c >> +++ b/drivers/video/omap2/dss/dispc.c >> @@ -2111,7 +2111,7 @@ void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) >> static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp, >> int vsw, int vfp, int vbp) >> { >> - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { >> + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { >> if (hsw< 1 || hsw> 64 || >> hfp< 1 || hfp> 256 || >> hbp< 1 || hbp> 256 || >> @@ -2144,7 +2144,7 @@ static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, >> { >> u32 timing_h, timing_v; >> >> - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { >> + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { >> timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | >> FLD_VAL(hbp-1, 27, 20); >> >> diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c >> index 960e977..23047b6 100644 >> --- a/drivers/video/omap2/dss/dpi.c >> +++ b/drivers/video/omap2/dss/dpi.c >> @@ -177,7 +177,12 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) >> >> #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL >> dss_clk_enable(DSS_CLK_FCK2); >> - r = dsi_pll_init(dssdev, 0, 1); >> + >> + if (cpu_is_omap3630()) >> + r = dsi_pll_init(dssdev, 1, 1); >> + else >> + r = dsi_pll_init(dssdev, 0, 1); >> + >> if (r) >> goto err3; >> #endif > > So, where does this patch come from? Did you write the whole thing from > scratch? You guys might want to cherry pick and keep them separated as they are slowly heading upstream, and would make maintenance easier.... http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.34 Regards,
On Tue, 2010-07-20 at 11:34 -0500, Robert Nelson wrote: > On Tue, Jul 20, 2010 at 11:06 AM, Tim Gardner <tcanonical@tpi.com> wrote: > > On 07/20/2010 05:25 PM, Lee Jones wrote: > >> From a2f11a44e5834d75611c88af69036cfe26eddf05 Mon Sep 17 00:00:00 2001 > >> From: Lee Jones<lee.jones@canonical.com> > >> Date: Tue, 20 Jul 2010 16:54:12 +0200 > >> Subject: [PATCH] UBUNTU: SAUCE: Enable USB and Ethernet on the XM > >> > >> Provide the required setup to enable USB Ethernet (usb0) > >> and USB host on the XM Beagleboard (A rev). > >> > >> Signed-off-by: Lee Jones<lee.jones@canonical.com> > >> --- > >> arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > >> arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > >> drivers/video/omap2/dss/dispc.c | 4 +- > >> drivers/video/omap2/dss/dpi.c | 7 +++- > >> 4 files changed, 85 insertions(+), 14 deletions(-) > >> > >> diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c > >> index 32565dc..7a1b351 100644 > >> --- a/arch/arm/mach-omap2/board-omap3beagle.c > >> +++ b/arch/arm/mach-omap2/board-omap3beagle.c > >> @@ -171,6 +171,11 @@ static void __init beagle_display_init(void) > >> { > >> int r; > >> > >> + if (cpu_is_omap3630()) > >> + beagle_dvi_device.reset_gpio = 129; > >> + else > >> + beagle_dvi_device.reset_gpio = 170; > >> + > >> r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); > >> if (r< 0) { > >> printk(KERN_ERR "Unable to get DVI reset GPIO\n"); > >> @@ -222,12 +227,22 @@ static int beagle_twl_gpio_setup(struct device *dev, > >> * power switch and overcurrent detect > >> */ > >> > >> - gpio_request(gpio + 1, "EHCI_nOC"); > >> - gpio_direction_input(gpio + 1); > >> - > >> - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > >> - gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > >> - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); > >> + if (cpu_is_omap3630()) { > >> + gpio_request(gpio + 1, "nDVI_PWR_EN"); > >> + gpio_direction_output(gpio + 1, 0); > >> + > >> + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > >> + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > >> + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); > >> + } > >> + else { > >> + gpio_request(gpio + 1, "EHCI_nOC"); > >> + gpio_direction_input(gpio + 1); > >> + > >> + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ > >> + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); > >> + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); > >> + } > >> > >> /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ > >> gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; > >> @@ -492,11 +507,6 @@ static void __init omap3_beagle_init(void) > >> ARRAY_SIZE(omap3_beagle_devices)); > >> omap_serial_init(); > >> > >> - omap_mux_init_gpio(170, OMAP_PIN_INPUT); > >> - gpio_request(170, "DVI_nPD"); > >> - /* REVISIT leave DVI powered down until it's needed ... */ > >> - gpio_direction_output(170, true); > >> - > >> usb_musb_init(&musb_board_data); > >> usb_ehci_init(&ehci_pdata); > >> omap3beagle_flash_init(); > >> diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h > >> index 7514174..5e76126 100644 > >> --- a/arch/arm/plat-omap/include/plat/cpu.h > >> +++ b/arch/arm/plat-omap/include/plat/cpu.h > >> @@ -389,6 +389,62 @@ IS_OMAP_TYPE(3517, 0x3517) > >> #define OMAP4430_REV_ES1_0 0x44300044 > >> > >> /* > >> + * Silicon revisions > >> + */ > >> +#define OMAP_ES_1_0 0x00 > >> +#define OMAP_ES_2_0 0x10 > >> +#define OMAP_ES_2_1 0x20 > >> +#define OMAP_ES_3_0 0x30 > >> +#define OMAP_ES_3_1 0x40 > >> + > >> +#define OMAP_REV_MASK 0x0000ff00 > >> +#define OMAP_REV_BITS ((omap_rev()& OMAP_REV_MASK)>> 8) > >> + > >> +#define OMAP_REV_IS(revid) \ > >> +static inline u8 omap_rev_is_ ##revid (void) \ > >> +{ \ > >> + return (OMAP_REV_BITS == OMAP_ES_ ##revid) ? 1 : 0; \ > >> +} > >> + > >> +#define OMAP_REV_LT(revid) \ > >> +static inline u8 omap_rev_lt_ ##revid (void) \ > >> +{ \ > >> + return (OMAP_REV_BITS< OMAP_ES_ ##revid) ? 1 : 0; \ > >> +} > >> + > >> +#define OMAP_REV_LE(revid) \ > >> +static inline u8 omap_rev_le_ ##revid (void) \ > >> +{ \ > >> + return (OMAP_REV_BITS<= OMAP_ES_ ##revid) ? 1 : 0; \ > >> +} > >> + > >> +#define OMAP_REV_GT(revid) \ > >> +static inline u8 omap_rev_gt_ ##revid (void) \ > >> +{ \ > >> + return (OMAP_REV_BITS> OMAP_ES_ ##revid) ? 1 : 0; \ > >> +} > >> + > >> +#define OMAP_REV_GE(revid) \ > >> +static inline u8 omap_rev_ge_ ##revid (void) \ > >> +{ \ > >> + return (OMAP_REV_BITS>= OMAP_ES_ ##revid) ? 1 : 0; \ > >> +} > >> + > >> +#define OMAP_REV_FUNCTIONS(revid) \ > >> + OMAP_REV_IS(revid) \ > >> + OMAP_REV_LT(revid) \ > >> + OMAP_REV_LE(revid) \ > >> + OMAP_REV_GT(revid) \ > >> + OMAP_REV_GE(revid) > >> + > >> +OMAP_REV_FUNCTIONS(1_0) > >> +OMAP_REV_FUNCTIONS(2_0) > >> +OMAP_REV_FUNCTIONS(2_1) > >> +OMAP_REV_FUNCTIONS(3_0) > >> +OMAP_REV_FUNCTIONS(3_1) > >> + > >> +/* > >> + > >> * omap_chip bits > >> * > >> * CHIP_IS_OMAP{2420,2430,3430} indicate that a particular structure is > >> diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c > >> index e777e35..6ba87d8 100644 > >> --- a/drivers/video/omap2/dss/dispc.c > >> +++ b/drivers/video/omap2/dss/dispc.c > >> @@ -2111,7 +2111,7 @@ void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) > >> static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp, > >> int vsw, int vfp, int vbp) > >> { > >> - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { > >> + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { > >> if (hsw< 1 || hsw> 64 || > >> hfp< 1 || hfp> 256 || > >> hbp< 1 || hbp> 256 || > >> @@ -2144,7 +2144,7 @@ static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, > >> { > >> u32 timing_h, timing_v; > >> > >> - if (cpu_is_omap24xx() || omap_rev()< OMAP3430_REV_ES3_0) { > >> + if (cpu_is_omap24xx() || (cpu_is_omap34xx()&& omap_rev_lt_3_0())) { > >> timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | > >> FLD_VAL(hbp-1, 27, 20); > >> > >> diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c > >> index 960e977..23047b6 100644 > >> --- a/drivers/video/omap2/dss/dpi.c > >> +++ b/drivers/video/omap2/dss/dpi.c > >> @@ -177,7 +177,12 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) > >> > >> #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL > >> dss_clk_enable(DSS_CLK_FCK2); > >> - r = dsi_pll_init(dssdev, 0, 1); > >> + > >> + if (cpu_is_omap3630()) > >> + r = dsi_pll_init(dssdev, 1, 1); > >> + else > >> + r = dsi_pll_init(dssdev, 0, 1); > >> + > >> if (r) > >> goto err3; > >> #endif > > > > So, where does this patch come from? Did you write the whole thing from > > scratch? > > You guys might want to cherry pick and keep them separated as they are > slowly heading upstream, and would make maintenance easier.... > > http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.34 Thanks for the note Robert. Lee, if these are indeed making their way upstream, care to resend this as a series of patches maintaining their provenance. A pull request would be fine. Was there also a bug in LP that was tracking this issue? Thanks, Leann
>>> So, where does this patch come from? Did you write the whole thing from >>> scratch? No, they were written by Steve Sakoman (CC'ed). >> You guys might want to cherry pick and keep them separated as they are >> slowly heading upstream, and would make maintenance easier.... >> >> http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.34 What he said. :) Thanks Robert. > Thanks for the note Robert. Lee, if these are indeed making their way > upstream, care to resend this as a series of patches maintaining their > provenance. A pull request would be fine. Was there also a bug in LP > that was tracking this issue? They are going to go upstream, but are not being driven by me. I assume Steve will be doing the pushing - unless you want me to Steve? The pull request from my tree is at the bottom of this email anyway. There was no LP bug. It was a request straight from the Linaro guys. Would it make it easier if I did open a bug for it? Kind regards, Lee ============================= Pull request =============================== The following changes since commit 94707988f7db590bf793c44529d8108d3166b962: UBUNTU: Ubuntu-2.6.35-9.14 (2010-07-16 15:33:55 -0700) are available in the git repository at: git://kernel.ubuntu.com/lag/ubuntu-maverick.git usb-ethernet-xm Lee Jones (1): UBUNTU: SAUCE: Enable USB and Ethernet on the XM arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ drivers/video/omap2/dss/dispc.c | 4 +- drivers/video/omap2/dss/dpi.c | 7 +++- 4 files changed, 85 insertions(+), 14 deletions(-)
> Was there also a bug in LP that was tracking this issue?
https://bugs.launchpad.net/bug/608095
On Wed, 2010-07-21 at 10:21 +0200, Lee Jones wrote: > >>> So, where does this patch come from? Did you write the whole thing from > >>> scratch? > > No, they were written by Steve Sakoman (CC'ed). > > >> You guys might want to cherry pick and keep them separated as they are > >> slowly heading upstream, and would make maintenance easier.... > >> > >> http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=shortlog;h=refs/heads/omap3-2.6.34 > > What he said. :) > > Thanks Robert. > > > Thanks for the note Robert. Lee, if these are indeed making their way > > upstream, care to resend this as a series of patches maintaining their > > provenance. A pull request would be fine. Was there also a bug in LP > > that was tracking this issue? > > They are going to go upstream, but are not being driven by me. > > I assume Steve will be doing the pushing - unless you want me to Steve? > > The pull request from my tree is at the bottom of this email anyway. > > There was no LP bug. It was a request straight from the Linaro guys. > > Would it make it easier if I did open a bug for it? It doesn't make it easier, just helpful for completeness sake. There's no need to open one if it doesn't exist. If you've already done so, just add the BugLink to the commits. > ============================= Pull request =============================== > > The following changes since commit 94707988f7db590bf793c44529d8108d3166b962: > > UBUNTU: Ubuntu-2.6.35-9.14 (2010-07-16 15:33:55 -0700) > > are available in the git repository at: > git://kernel.ubuntu.com/lag/ubuntu-maverick.git usb-ethernet-xm > > Lee Jones (1): > UBUNTU: SAUCE: Enable USB and Ethernet on the XM I was actually expecting this to be separated into a series of four patches as Steve has them in his tree. Additionally, it would be good to have Steve's SOB for the patches assuming he's signed off on them. ARM: OMAP: Add macros for comparing silicon revision OMAP: DSS2: check for both cpu type and revision, rather than just revision OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX ARM: OMAP: Beagle: support twl gpio differences on xM > arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > drivers/video/omap2/dss/dispc.c | 4 +- > drivers/video/omap2/dss/dpi.c | 7 +++- > 4 files changed, 85 insertions(+), 14 deletions(-) Thanks, Leann
> I was actually expecting this to be separated into a series of four > patches as Steve has them in his tree. Additionally, it would be good > to have Steve's SOB for the patches assuming he's signed off on them. > > ARM: OMAP: Add macros for comparing silicon revision > OMAP: DSS2: check for both cpu type and revision, rather than just revision > OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX > ARM: OMAP: Beagle: support twl gpio differences on xM > >> arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ >> arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ >> drivers/video/omap2/dss/dispc.c | 4 +- >> drivers/video/omap2/dss/dpi.c | 7 +++- >> 4 files changed, 85 insertions(+), 14 deletions(-) Does something more like this suit better? The following changes since commit 707b5c94446b820cd2f9c0f1917eb41ed5621459: Revert "UBUNTU: SAUCE: ensure vga16fb loads if no other driver claims the VGA device" (2010-07-20 18:21:29 +0200) are available in the git repository at: git://kernel.ubuntu.com/lag/ubuntu-maverick.git lp608095-usb-ethernet-xm Lee Jones (4): UBUNTU: SAUCE: ARM: OMAP: Add macros for comparing silicon revision UBUNTU: SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than just revision UBUNTU: SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX UBUNTU: SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ drivers/video/omap2/dss/dispc.c | 4 +- drivers/video/omap2/dss/dpi.c | 7 +++- 4 files changed, 85 insertions(+), 14 deletions(-)
On Wed, 2010-07-21 at 12:24 +0200, Lee Jones wrote: > > I was actually expecting this to be separated into a series of four > > patches as Steve has them in his tree. Additionally, it would be good > > to have Steve's SOB for the patches assuming he's signed off on them. > > > > ARM: OMAP: Add macros for comparing silicon revision > > OMAP: DSS2: check for both cpu type and revision, rather than just revision > > OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX > > ARM: OMAP: Beagle: support twl gpio differences on xM > > > >> arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > >> arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > >> drivers/video/omap2/dss/dispc.c | 4 +- > >> drivers/video/omap2/dss/dpi.c | 7 +++- > >> 4 files changed, 85 insertions(+), 14 deletions(-) > > Does something more like this suit better? > > The following changes since commit 707b5c94446b820cd2f9c0f1917eb41ed5621459: > > Revert "UBUNTU: SAUCE: ensure vga16fb loads if no other driver claims the VGA device" (2010-07-20 18:21:29 +0200) > > are available in the git repository at: > git://kernel.ubuntu.com/lag/ubuntu-maverick.git lp608095-usb-ethernet-xm > > Lee Jones (4): > UBUNTU: SAUCE: ARM: OMAP: Add macros for comparing silicon revision > UBUNTU: SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than just revision > UBUNTU: SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX > UBUNTU: SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM Thanks Lee. Steve, I noticed your SOB was missing from the patches. Care to sign off on these? I noticed the first patch, "ARM: OMAP: Add macros for comparing silicon revision", was "Adapted from arago project patch by Sanjeev Premi". I assume the remaining three were authored by yourself? I also assume you'll be working to push these upstream or should Lee provide some assistance? Thanks, Leann > arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > drivers/video/omap2/dss/dispc.c | 4 +- > drivers/video/omap2/dss/dpi.c | 7 +++- > 4 files changed, 85 insertions(+), 14 deletions(-) > > >
On Wed, Jul 21, 2010 at 5:52 AM, Leann Ogasawara <leann.ogasawara@canonical.com> wrote: > On Wed, 2010-07-21 at 12:24 +0200, Lee Jones wrote: >> > I was actually expecting this to be separated into a series of four >> > patches as Steve has them in his tree. Additionally, it would be good >> > to have Steve's SOB for the patches assuming he's signed off on them. >> > >> > ARM: OMAP: Add macros for comparing silicon revision >> > OMAP: DSS2: check for both cpu type and revision, rather than just revision >> > OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX >> > ARM: OMAP: Beagle: support twl gpio differences on xM Sure thing: Signed-off-by: Steve Sakoman <steve@sakoman.com> > Steve, I noticed your SOB was missing from the patches. Care to sign > off on these? Done above. > I noticed the first patch, "ARM: OMAP: Add macros for > comparing silicon revision", was "Adapted from arago project patch by > Sanjeev Premi". I assume the remaining three were authored by yourself? Correct > I also assume you'll be working to push these upstream or should Lee > provide some assistance? I am in the process of re-basing these patches for 2.6.35 and will submit that series. My Beagle xM has memory issues, so I am really not able to seriously test anything since RAM is suspect. I've asked Jason to supply me with a good xM when they are available. I am testing 37xx changes on a 37XX Overo prototype, which doesn't seem to have RAM issues. Regards, Steve
On 21/07/10 22:11, Steve Sakoman wrote: > On Wed, Jul 21, 2010 at 5:52 AM, Leann Ogasawara > <leann.ogasawara@canonical.com> wrote: >> On Wed, 2010-07-21 at 12:24 +0200, Lee Jones wrote: >>>> I was actually expecting this to be separated into a series of four >>>> patches as Steve has them in his tree. Additionally, it would be good >>>> to have Steve's SOB for the patches assuming he's signed off on them. >>>> >>>> ARM: OMAP: Add macros for comparing silicon revision >>>> OMAP: DSS2: check for both cpu type and revision, rather than just revision >>>> OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX >>>> ARM: OMAP: Beagle: support twl gpio differences on xM > > Sure thing: > > Signed-off-by: Steve Sakoman <steve@sakoman.com> Can these be applied to the kernel now?
Applied to Maverick linux master. Thanks, Leann On Wed, 2010-07-21 at 12:24 +0200, Lee Jones wrote: > > I was actually expecting this to be separated into a series of four > > patches as Steve has them in his tree. Additionally, it would be good > > to have Steve's SOB for the patches assuming he's signed off on them. > > > > ARM: OMAP: Add macros for comparing silicon revision > > OMAP: DSS2: check for both cpu type and revision, rather than just revision > > OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX > > ARM: OMAP: Beagle: support twl gpio differences on xM > > > >> arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > >> arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > >> drivers/video/omap2/dss/dispc.c | 4 +- > >> drivers/video/omap2/dss/dpi.c | 7 +++- > >> 4 files changed, 85 insertions(+), 14 deletions(-) > > Does something more like this suit better? > > The following changes since commit 707b5c94446b820cd2f9c0f1917eb41ed5621459: > > Revert "UBUNTU: SAUCE: ensure vga16fb loads if no other driver claims the VGA device" (2010-07-20 18:21:29 +0200) > > are available in the git repository at: > git://kernel.ubuntu.com/lag/ubuntu-maverick.git lp608095-usb-ethernet-xm > > Lee Jones (4): > UBUNTU: SAUCE: ARM: OMAP: Add macros for comparing silicon revision > UBUNTU: SAUCE: OMAP: DSS2: check for both cpu type and revision, rather than just revision > UBUNTU: SAUCE: OMAP: DSS2: enable hsclk in dsi_pll_init for OMAP36XX > UBUNTU: SAUCE: ARM: OMAP: Beagle: support twl gpio differences on xM > > arch/arm/mach-omap2/board-omap3beagle.c | 32 +++++++++++------ > arch/arm/plat-omap/include/plat/cpu.h | 56 +++++++++++++++++++++++++++++++ > drivers/video/omap2/dss/dispc.c | 4 +- > drivers/video/omap2/dss/dpi.c | 7 +++- > 4 files changed, 85 insertions(+), 14 deletions(-) > > >
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 32565dc..7a1b351 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -171,6 +171,11 @@ static void __init beagle_display_init(void) { int r; + if (cpu_is_omap3630()) + beagle_dvi_device.reset_gpio = 129; + else + beagle_dvi_device.reset_gpio = 170; + r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); if (r < 0) { printk(KERN_ERR "Unable to get DVI reset GPIO\n"); @@ -222,12 +227,22 @@ static int beagle_twl_gpio_setup(struct device *dev, * power switch and overcurrent detect */ - gpio_request(gpio + 1, "EHCI_nOC"); - gpio_direction_input(gpio + 1); - - /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ - gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); - gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); + if (cpu_is_omap3630()) { + gpio_request(gpio + 1, "nDVI_PWR_EN"); + gpio_direction_output(gpio + 1, 0); + + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); + } + else { + gpio_request(gpio + 1, "EHCI_nOC"); + gpio_direction_input(gpio + 1); + + /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ + gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); + gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); + } /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; @@ -492,11 +507,6 @@ static void __init omap3_beagle_init(void) ARRAY_SIZE(omap3_beagle_devices)); omap_serial_init(); - omap_mux_init_gpio(170, OMAP_PIN_INPUT); - gpio_request(170, "DVI_nPD"); - /* REVISIT leave DVI powered down until it's needed ... */ - gpio_direction_output(170, true); - usb_musb_init(&musb_board_data); usb_ehci_init(&ehci_pdata); omap3beagle_flash_init(); diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h index 7514174..5e76126 100644 --- a/arch/arm/plat-omap/include/plat/cpu.h +++ b/arch/arm/plat-omap/include/plat/cpu.h @@ -389,6 +389,62 @@ IS_OMAP_TYPE(3517, 0x3517) #define OMAP4430_REV_ES1_0 0x44300044 /* + * Silicon revisions + */ +#define OMAP_ES_1_0 0x00 +#define OMAP_ES_2_0 0x10 +#define OMAP_ES_2_1 0x20 +#define OMAP_ES_3_0 0x30 +#define OMAP_ES_3_1 0x40 + +#define OMAP_REV_MASK 0x0000ff00 +#define OMAP_REV_BITS ((omap_rev() & OMAP_REV_MASK) >> 8) + +#define OMAP_REV_IS(revid) \ +static inline u8 omap_rev_is_ ##revid (void) \ +{ \ + return (OMAP_REV_BITS == OMAP_ES_ ##revid) ? 1 : 0; \ +} + +#define OMAP_REV_LT(revid) \ +static inline u8 omap_rev_lt_ ##revid (void) \ +{ \ + return (OMAP_REV_BITS < OMAP_ES_ ##revid) ? 1 : 0; \ +} + +#define OMAP_REV_LE(revid) \ +static inline u8 omap_rev_le_ ##revid (void) \ +{ \ + return (OMAP_REV_BITS <= OMAP_ES_ ##revid) ? 1 : 0; \ +} + +#define OMAP_REV_GT(revid) \ +static inline u8 omap_rev_gt_ ##revid (void) \ +{ \ + return (OMAP_REV_BITS > OMAP_ES_ ##revid) ? 1 : 0; \ +} + +#define OMAP_REV_GE(revid) \ +static inline u8 omap_rev_ge_ ##revid (void) \ +{ \ + return (OMAP_REV_BITS >= OMAP_ES_ ##revid) ? 1 : 0; \ +} + +#define OMAP_REV_FUNCTIONS(revid) \ + OMAP_REV_IS(revid) \ + OMAP_REV_LT(revid) \ + OMAP_REV_LE(revid) \ + OMAP_REV_GT(revid) \ + OMAP_REV_GE(revid) + +OMAP_REV_FUNCTIONS(1_0) +OMAP_REV_FUNCTIONS(2_0) +OMAP_REV_FUNCTIONS(2_1) +OMAP_REV_FUNCTIONS(3_0) +OMAP_REV_FUNCTIONS(3_1) + +/* + * omap_chip bits * * CHIP_IS_OMAP{2420,2430,3430} indicate that a particular structure is diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c index e777e35..6ba87d8 100644 --- a/drivers/video/omap2/dss/dispc.c +++ b/drivers/video/omap2/dss/dispc.c @@ -2111,7 +2111,7 @@ void dispc_set_parallel_interface_mode(enum omap_parallel_interface_mode mode) static bool _dispc_lcd_timings_ok(int hsw, int hfp, int hbp, int vsw, int vfp, int vbp) { - if (cpu_is_omap24xx() || omap_rev() < OMAP3430_REV_ES3_0) { + if (cpu_is_omap24xx() || (cpu_is_omap34xx() && omap_rev_lt_3_0())) { if (hsw < 1 || hsw > 64 || hfp < 1 || hfp > 256 || hbp < 1 || hbp > 256 || @@ -2144,7 +2144,7 @@ static void _dispc_set_lcd_timings(int hsw, int hfp, int hbp, { u32 timing_h, timing_v; - if (cpu_is_omap24xx() || omap_rev() < OMAP3430_REV_ES3_0) { + if (cpu_is_omap24xx() || (cpu_is_omap34xx() && omap_rev_lt_3_0())) { timing_h = FLD_VAL(hsw-1, 5, 0) | FLD_VAL(hfp-1, 15, 8) | FLD_VAL(hbp-1, 27, 20); diff --git a/drivers/video/omap2/dss/dpi.c b/drivers/video/omap2/dss/dpi.c index 960e977..23047b6 100644 --- a/drivers/video/omap2/dss/dpi.c +++ b/drivers/video/omap2/dss/dpi.c @@ -177,7 +177,12 @@ int omapdss_dpi_display_enable(struct omap_dss_device *dssdev) #ifdef CONFIG_OMAP2_DSS_USE_DSI_PLL dss_clk_enable(DSS_CLK_FCK2); - r = dsi_pll_init(dssdev, 0, 1); + + if (cpu_is_omap3630()) + r = dsi_pll_init(dssdev, 1, 1); + else + r = dsi_pll_init(dssdev, 0, 1); + if (r) goto err3; #endif