Op 22 nov 2008, om 15:43 heeft Dmitry Baryshkov het volgende geschreven:
I'd like to ask for the merge of the following patch into the stable branch. It's just a rebase of the latest fixes that went into .dev ontop of the stable branch. And Anthony Callegaro verified that this patchdoes really fix all remaining tosa problems. With this patch applied tosa should boot w/o problems with 2.6.24 OE kernels.
Signed-off-by: Koen Kooi <[EMAIL PROTECTED]>
From 996f640aa84139765af6b791c9796e547c043a67 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov <[EMAIL PROTECTED]> Date: Tue, 18 Nov 2008 04:18:54 +0300 Subject: [PATCH] linux-rp-2.6.24: fix tosa kerneladd two patches: one to correctly initialise the AC97 interface on PXA, other to fixup the tosa-bl driver (most important thing is pxa_gpio_mode() setting).Signed-off-by: Dmitry Baryshkov <[EMAIL PROTECTED]> --- ...97-switch-AC-unit-to-correct-state-before.patch | 56 +++++++++++.../linux/linux-rp-2.6.24/tosa/tosa-bl-fixup.diff | 103 +++++++++++ +++++++++packages/linux/linux-rp_2.6.24.bb | 4 +- 3 files changed, 162 insertions(+), 1 deletions(-)create mode 100644 packages/linux/linux-rp-2.6.24/tosa/0001-pxa2xx- ac97-switch-AC-unit-to-correct-state-before.patch create mode 100644 packages/linux/linux-rp-2.6.24/tosa/tosa-bl- fixup.diffdiff --git a/packages/linux/linux-rp-2.6.24/tosa/0001-pxa2xx-ac97- switch-AC-unit-to-correct-state-before.patch b/packages/linux/linux- rp-2.6.24/tosa/0001-pxa2xx-ac97-switch-AC-unit-to-correct-state- before.patchnew file mode 100644 index 0000000..09f0cb9 --- /dev/null+++ b/packages/linux/linux-rp-2.6.24/tosa/0001-pxa2xx-ac97-switch-AC- unit-to-correct-state-before.patch@@ -0,0 +1,56 @@+From 688df15bb534519e0698cc8e4a4d9234afd32105 Mon Sep 17 00:00:00 2001+From: Dmitry Baryshkov <[EMAIL PROTECTED]> +Date: Fri, 7 Nov 2008 15:50:39 +0300+Subject: [PATCH] pxa2xx-ac97: switch AC unit to correct state before probing++If AC97 unit is in partially enabled state, early request_irq can trigger +IRQ storm or even full hang up. Workaround this by forcibly switching ACLINK off+at the start of the probe. + +Signed-off-by: Dmitry Baryshkov <[EMAIL PROTECTED]> +--- + sound/soc/pxa/pxa2xx-ac97.c | 30 +++++++++++++++++------------- + 1 files changed, 17 insertions(+), 13 deletions(-) + +Index: linux-2.6.24/sound/soc/pxa/pxa2xx-ac97.c +===================================================================+--- linux-2.6.24.orig/sound/soc/pxa/pxa2xx-ac97.c 2008-01-25 01:58:37.000000000 +0300 ++++ linux-2.6.24/sound/soc/pxa/pxa2xx-ac97.c 2008-11-15 20:02:45.396976363 +0300+@@ -284,10 +284,6 @@ static int pxa2xx_ac97_probe(struct plat + { + int ret; ++- ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, IRQF_DISABLED, "AC97", NULL);+- if (ret < 0) +- goto err; +- + pxa_gpio_mode(GPIO31_SYNC_AC97_MD); + pxa_gpio_mode(GPIO30_SDATA_OUT_AC97_MD); + pxa_gpio_mode(GPIO28_BITCLK_AC97_MD); +@@ -296,15 +292,23 @@ static int pxa2xx_ac97_probe(struct plat + /* Use GPIO 113 as AC97 Reset on Bulverde */ + pxa_gpio_mode(113 | GPIO_ALT_FN_2_OUT); + #endif ++ GCR = GCR_ACLINK_OFF; ++ + pxa_set_cken(CKEN_AC97, 1); ++++ ret = request_irq(IRQ_AC97, pxa2xx_ac97_irq, IRQF_DISABLED, "AC97", NULL);++ if (ret < 0) ++ goto err; ++ ++ + return 0; + +- err: +- if (CKEN & (1 << CKEN_AC97)) { ++err: ++/* if (CKEN & (1 << CKEN_AC97)) {*/ + GCR |= GCR_ACLINK_OFF; + free_irq(IRQ_AC97, NULL); + pxa_set_cken(CKEN_AC97, 0); +- } ++/* }*/ + return ret; + } +diff --git a/packages/linux/linux-rp-2.6.24/tosa/tosa-bl-fixup.diff b/packages/linux/linux-rp-2.6.24/tosa/tosa-bl-fixup.diffnew file mode 100644 index 0000000..c4a23d1 --- /dev/null +++ b/packages/linux/linux-rp-2.6.24/tosa/tosa-bl-fixup.diff @@ -0,0 +1,103 @@ +Index: linux-2.6.24/drivers/video/backlight/tosa_bl.c +===================================================================+--- linux-2.6.24.orig/drivers/video/backlight/tosa_bl.c 2008-11-15 22:59:51.592985003 +0300 ++++ linux-2.6.24/drivers/video/backlight/tosa_bl.c 2008-11-18 04:08:13.021416618 +0300+@@ -76,6 +76,8 @@ static void pxa_nssp_output(struct tosa_ ++ static void tosa_set_backlight(struct tosa_bl_data *data, int brightness)+ { ++ pr_debug("tosa_set_backlight\n"); ++ + /* SetBacklightDuty */+ i2c_smbus_write_byte_data(&data->client, DAC_CH2, (unsigned char)brightness);+ +@@ -91,7 +93,7 @@ static void tosa_set_backlight(struct to + + static void tosa_lcd_tg_init(struct tosa_bl_data *data) + { +- dev_dbg(&data->bl_dev->dev, "tosa_lcd_init\n"); ++ pr_debug("tosa_lcd_init\n"); + + /* L3V On */+ set_scoop_gpio ( &tosascoop_jc_device.dev,TOSA_SCOOP_JC_TC6393XB_L3V_ON);+@@ -116,7 +118,7 @@ static void tosa_lcd_tg_on(struct tosa_b + + tosa_lcd_tg_init(data); ++- dev_dbg(&data->bl_dev->dev, "tosa_lcd_on: %04x (%d)\n", value, mode->yres);++ pr_debug("tosa_lcd_on: %04x (%d)\n", value, mode->yres); + pxa_nssp_output(data, TG_PNLCTL, value); + + /* TG LCD pannel power up */ +@@ -129,12 +131,15 @@ static void tosa_lcd_tg_on(struct tosa_b + + /* set common voltage */ + i2c_smbus_write_byte_data(&data->client, DAC_CH1, data->comadj); ++ ++ tosa_set_backlight(data, data->bl_dev->props.brightness); ++ + } + + static void tosa_lcd_tg_off(struct tosa_bl_data *data) + { + tosa_set_backlight(data, 0); +- dev_dbg(&data->bl_dev->dev, "tosa_lcd_off\n"); ++ pr_debug("tosa_lcd_off\n"); + /* TG LCD VHSA off */ + pxa_nssp_output(data, TG_PINICTL,0x4); + mdelay(50); +@@ -158,8 +163,6 @@ static int tosa_bl_update_status(struct + struct tosa_bl_data *data = dev_get_drvdata(&dev->dev); + int new_power = max(props->power, props->fb_blank); + +- tosa_set_backlight(data, props->brightness); +- + if (new_power) + tosa_lcd_tg_off(data); + else +@@ -223,22 +226,26 @@ static int tosa_bl_detect_client(struct + + err = gpio_request(TOSA_TC6393XB_BL_C20MA, "backlight"); + if (err) { +- dev_dbg(&data->bl_dev->dev, "Unable to request gpio!\n"); ++ printk(KERN_ERR "tosa-bl; Unable to request gpio!\n"); + goto err_gpio_bl; + } + + err = gpio_request(TOSA_TC6393XB_TG_ON, "tg"); + if (err) { +- dev_dbg(&data->bl_dev->dev, "Unable to request gpio!\n"); ++ printk(KERN_ERR "tosa-bl: Unable to request gpio!\n"); + goto err_gpio_tg; + } + + err = ssp_init(&data->nssp_dev,2,0); + if (err) { +- dev_err(&data->bl_dev->dev, "Unable to register NSSP handler!\n"); ++ printk(KERN_ERR "tosa-bl: Unable to register NSSP handler!\n"); + goto err_ssp_init; + } + ++ pxa_gpio_mode(GPIO83_NSSP_TX); ++ pxa_gpio_mode(GPIO81_NSSP_CLK_OUT); ++ pxa_gpio_mode(GPIO82_NSSP_FRM_OUT); ++ + /* Tell the i2c layer a new client has arrived */ + err = i2c_attach_client(client); + if (err) +@@ -269,7 +276,6 @@ static int tosa_bl_detect_client(struct + err_fb_register: + backlight_device_unregister(data->bl_dev); + err_bl_register: +- tosa_set_backlight(data, 0); + tosa_lcd_tg_off(data); + + err = i2c_detach_client(client); +@@ -296,7 +302,6 @@ static int tosa_bl_detach_client(struct + + backlight_device_unregister(data->bl_dev); + +- tosa_set_backlight(data, 0); + tosa_lcd_tg_off(data); + + /* Try to detach the client from i2c space */diff --git a/packages/linux/linux-rp_2.6.24.bb b/packages/linux/ linux-rp_2.6.24.bbindex df732ac..0128adc 100644 --- a/packages/linux/linux-rp_2.6.24.bb +++ b/packages/linux/linux-rp_2.6.24.bb @@ -1,6 +1,6 @@ require linux-rp.inc -PR = "r9" +PR = "r10" DEFAULT_PREFERENCE = "-1" #DEFAULT_PREFERENCE_collie = "1" @@ -181,6 +181,8 @@ SRC_URI_append_tosa = "\file://tosa/0043-Use-clocklib-for-sa1100-sub- arch.patch;patch=1 \ file://tosa/0056-Support-resetting-by-asserting-GPIO-pin.patch ;patch=1 \file://tosa/0057-Clean-up-tosa-resetting.patch;patch=1 \+ file://tosa/0001-pxa2xx-ac97-switch-AC-unit-to-correct-state-before.patch ;patch=1 \+ file://tosa/tosa-bl-fixup.diff;patch=1 \ " SRC_URI_append_akita = "\ -- 1.5.6.5 -- With best wishes Dmitry _______________________________________________ Openembedded-stablebranch mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-stablebranch
PGP.sig
Description: This is a digitally signed message part
_______________________________________________ Openembedded-stablebranch mailing list [email protected] http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-stablebranch
