genesis updates for 2.6.37-rc1
Subsystems (2)
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
Which contains:
Guennadi Liakhovetski (22):
fbdev: sh_mobile_lcdcfb: use fb_videomode_to_var() instead of open-coding
fbdev: sh_mobile_hdmi: simplify the EDID reading procedure
fbdev: sh_mobile_lcdcfb: fix more error paths
fbdev: sh_mobile_lcdcfb: minor simplifications and clean up
fbdev: sh_mobile_lcdcfb: Support multiple video modes in platform data
fbdev: sh_mobile_lcdcfb: fix notifier callback return codes
fbdev: sh_mobile_lcdcfb: allocate memory, sufficient for the biggest mode
fbdev: sh_mobile_hdmi: add initial support for modes, other than 720p
fbdev: sh_mobile_hdmi: enable "external" mode
fbdev: sh_mobile_hdmi: implement locking
fbdev: sh_mobile_lcdcfb: separate display variable data from framebuffer data
fbdev: sh_mobile_hdmi: cosmetic improvements
fbdev: sh_mobile_hdmi: improve HDMI PHY parameters for high resolutions
fbdev: sh_mobile_hdmi: support hot-plugging of different HDMI / DVI displays
ARM: mach-shmobile: add two more video modes for HDMI
fbdev: sh_mobile_lcdc: reconfigure the framebuffer, when free
sh: fix an ms7724se compile breakage
fbdev: sh_mobile_lcdc: make platform videomode table optional
ARM: mach-shmobile: remove videomodes from ap4evb platform data
fbdev: sh_mobile_lcdc: relax .check_var() HSYNC test
fbdev: sh_mobile_hdmi: add support for the "video=" kernel command line option
ARM: arch-shmobile: Add IMX074 camera sensor data to the AP4EVB platform
Kuninori Morimoto (8):
ARM: mach-shmobile: ap4evb: modify tsc2007 platform settings
fbdev: sh-mobile_hdmi: remove un-necessity settings
ARM: mach-shmobile: pfc-sh7372: modify wrong comment
ARM: mach-shmobile: sh7372: modify INTCS table
ARM: mach-shmobile: ap4evb: modify touchpanel judgment condition
ARM: mach-shmobile: modify wrong array size of div6_reparent_clks
ARM: mach-shmobile: clock-sh7372: add sh7372_ prefix to global clocks
ARM: mach-shmobile: clock-sh7372: FSI parent select support
Magnus Damm (6):
ARM: mach-shmobile: Extend AP4EVB LCD comments
ARM: mach-shmobile: Use evt2irq() for sh7372 DMAC
ARM: shmobile: break out sh7372 platform devices
ARM: shmobile: make AP4EVB MMCIF resource string consistent
ARM: shmobile: use device name for timer clocks
ARM: mach-shmobile: add TMU platform data for sh7372
Nicolas Kaiser (1):
arm/shmobile: remove duplicated include
TAKEI Mitsuharu (1):
ARM: mach-shmobile: ap4evb: modify LCDC1 irq number
arch/arm/mach-shmobile/board-ap4evb.c | 326 +++++++++----- arch/arm/mach-shmobile/clock-sh7367.c | 2 +- arch/arm/mach-shmobile/clock-sh7372.c | 78 +++- arch/arm/mach-shmobile/clock-sh7377.c | 2 +- arch/arm/mach-shmobile/include/mach/sh7372.h | 10 +- arch/arm/mach-shmobile/intc-sh7372.c | 28 ++ arch/arm/mach-shmobile/pfc-sh7372.c | 8 +- arch/arm/mach-shmobile/setup-sh7367.c | 1 - arch/arm/mach-shmobile/setup-sh7372.c | 94 ++++- arch/arm/mach-shmobile/setup-sh7377.c | 1 - arch/sh/boards/mach-ap325rxa/setup.c | 29 +- arch/sh/boards/mach-ecovec24/setup.c | 60 ++- arch/sh/boards/mach-kfr2r09/setup.c | 29 +- arch/sh/boards/mach-migor/setup.c | 58 ++-- arch/sh/boards/mach-se/7724/setup.c | 54 ++- drivers/video/sh_mipi_dsi.c | 32 +- drivers/video/sh_mobile_hdmi.c | 614 +++++++++++++++++--------- drivers/video/sh_mobile_lcdcfb.c | 348 ++++++++++----- drivers/video/sh_mobile_lcdcfb.h | 41 ++ include/video/sh_mobile_lcdc.h | 5 +- 20 files changed, 1213 insertions(+), 607 deletions(-) create mode 100644 drivers/video/sh_mobile_lcdcfb.h
Quoted 3 lines · Paul Mundt
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
I'm seeing a merge conflict against current mainline. I'm not convinced that there's a simple solution to this - it looks to me like the snd_soc_register_codec() is not correctly placed here - as the codec code references the hdmi data structure, but it's registered before the hdmi data structure is setup.
Quoted 1 line
From [email protected] Fri Oct 22 17:57:35 2010
From: [email protected] ()
Date: Fri, 22 Oct 2010 21:57:35 -0000
Subject: No subject
Message-ID: <[email protected]>
Auto-merging arch/arm/mach-shmobile/board-ap4evb.c Auto-merging arch/sh/boards/mach-ecovec24/setup.c Auto-merging drivers/video/sh_mobile_hdmi.c
CONFLICT (content): Merge conflict in drivers/video/sh_mobile_hdmi.c Auto-merging drivers/video/sh_mobile_lcdcfb.c
drivers/video/sh_mobile_hdmi.c +0 -0
@@@ -224,60 -227,8 +229,60 @@@ static u8 hdmi_read(struct sh_hdmi *hdmreturn ioread8 (hdmi->base + reg); } +/* + * HDMI sound + */ +static unsigned int sh_hdmi_snd_read(struct snd_soc_codec *codec, + unsigned int reg) +{ + struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec); + + return hdmi_read(hdmi, reg); +} + +static int sh_hdmi_snd_write(struct snd_soc_codec *codec, + unsigned int reg, + unsigned int value) +{ + struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec); + +hdmi_write (hdmi, value, reg); + return 0; +} + +static struct snd_soc_dai_driver sh_hdmi_dai = { + .name = "sh_mobile_hdmi-hifi", + .playback = { + .stream_name = "Playback", + .channels_min = 2, + .channels_max = 8, + .rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | + SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | + SNDRV_PCM_RATE_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE, + }, +}; + +static int sh_hdmi_snd_probe(struct snd_soc_codec *codec) +{ +dev_info (codec->dev,"SH Mobile HDMI Audio Codec" ); + + return 0; +} + +static struct snd_soc_codec_driver soc_codec_dev_sh_hdmi = { + .probe = sh_hdmi_snd_probe, + .read = sh_hdmi_snd_read, + .write = sh_hdmi_snd_write, +}; + +/* + * HDMI video + */ + /* External video parameter settings */ - static void hdmi_external_video_param(struct sh_hdmi *hdmi) + static void sh_hdmi_external_video_param(struct sh_hdmi *hdmi) {struct fb_var_screeninfo *var = &hdmi->var;u16 htotal, hblank, hdelay, vtotal, vblank, vdelay, voffset;return -ENOMEM ; } ++<<<<<<< HEAD:drivers/video/sh_mobile_hdmi.c + ret =snd_soc_register_codec (&pdev->dev, + &soc_codec_dev_sh_hdmi, &sh_hdmi_dai,1 ); + if (ret < 0) + goto esndreg; + ++======= +mutex_init (&hdmi->mutex); ++>>>>>>> 1a0b1eac5012326e52d1dcf78695ac08f41c37d7:drivers/video/sh_mobile_hdmi.c hdmi->dev = &pdev->dev; hdmi->hdmi_clk =clk_get (&pdev->dev,"ick" ); erate:clk_put (hdmi->hdmi_clk); egetclk: ++<<<<<<< HEAD:drivers/video/sh_mobile_hdmi.c +snd_soc_unregister_codec (&pdev->dev); +esndreg: ++======= +mutex_destroy (&hdmi->mutex); ++>>>>>>> 1a0b1eac5012326e52d1dcf78695ac08f41c37d7:drivers/video/sh_mobile_hdmi.ckfree (hdmi);return ret;struct sh_mobile_hdmi_info *pdata = pdev->dev.platform_data;struct sh_hdmi *hdmi =platform_get_drvdata (pdev);struct resource *res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +struct sh_mobile_lcdc_board_cfg *board_cfg = &pdata->lcd_chan->board_cfg;int irq =platform_get_irq (pdev,0 ); ++<<<<<<< HEAD:drivers/video/sh_mobile_hdmi.c +snd_soc_unregister_codec (&pdev->dev); + + pdata->lcd_chan->board_cfg.display_on =NULL ; + pdata->lcd_chan->board_cfg.display_off =NULL ; + pdata->lcd_chan->board_cfg.board_data =NULL ; - ++======= + board_cfg->display_on =NULL ; + board_cfg->display_off =NULL ; + board_cfg->board_data =NULL ; + board_cfg->owner =NULL ; ++>>>>>>> 1a0b1eac5012326e52d1dcf78695ac08f41c37d7:drivers/video/sh_mobile_hdmi.c + + /* No new work will be scheduled, wait for running ISR */free_irq (irq, hdmi); -pm_runtime_disable (&pdev->dev); +/* Wait for already scheduled work */ cancel_delayed_work_sync (&hdmi->edid_work); +pm_runtime_disable (&pdev->dev);clk_disable (hdmi->hdmi_clk);clk_put (hdmi->hdmi_clk);iounmap (hdmi->base);
Quoted 11 lines · Russell King - ARM Linux
Quoted 3 lines · Paul Mundt
Please pull from:
master.kernel.org:/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
I'm seeing a merge conflict against current mainline. I'm not convinced that there's a simple solution to this - it looks to me like the
snd_soc_register_codec()is not correctly placed here - as the codec code references the hdmi data structure, but it's registered before the hdmi data structure is setup.
I was afraid that would happen. The ordering is certainly suspect, so I've moved it down and reworked it a bit. This seems to work ok:
---
drivers/video/sh_mobile_hdmi.c +0 -0
@@@ -224,60 -227,8 +229,60 @@@ static u8 hdmi_read(struct sh_hdmi *hdmreturn ioread8 (hdmi->base + reg); } +/* + * HDMI sound + */ +static unsigned int sh_hdmi_snd_read(struct snd_soc_codec *codec, + unsigned int reg) +{ + struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec); + + return hdmi_read(hdmi, reg); +} + +static int sh_hdmi_snd_write(struct snd_soc_codec *codec, + unsigned int reg, + unsigned int value) +{ + struct sh_hdmi *hdmi = snd_soc_codec_get_drvdata(codec); + +hdmi_write (hdmi, value, reg); + return 0; +} + +static struct snd_soc_dai_driver sh_hdmi_dai = { + .name = "sh_mobile_hdmi-hifi", + .playback = { + .stream_name = "Playback", + .channels_min = 2, + .channels_max = 8, + .rates = SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 | + SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_88200 | + SNDRV_PCM_RATE_96000 | SNDRV_PCM_RATE_176400 | + SNDRV_PCM_RATE_192000, + .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE, + }, +}; + +static int sh_hdmi_snd_probe(struct snd_soc_codec *codec) +{ +dev_info (codec->dev,"SH Mobile HDMI Audio Codec" ); + + return 0; +} + +static struct snd_soc_codec_driver soc_codec_dev_sh_hdmi = { + .probe = sh_hdmi_snd_probe, + .read = sh_hdmi_snd_read, + .write = sh_hdmi_snd_write, +}; + +/* + * HDMI video + */ + /* External video parameter settings */ - static void hdmi_external_video_param(struct sh_hdmi *hdmi) + static void sh_hdmi_external_video_param(struct sh_hdmi *hdmi) {struct fb_var_screeninfo *var = &hdmi->var;u16 htotal, hblank, hdelay, vtotal, vblank, vdelay, voffset;return -ENOMEM ; } - ret =snd_soc_register_codec (&pdev->dev, - &soc_codec_dev_sh_hdmi, &sh_hdmi_dai,1 ); -if (ret <0 ) - goto esndreg; +mutex_init (&hdmi->mutex); + hdmi->dev = &pdev->dev; hdmi->hdmi_clk =clk_get (&pdev->dev,"ick" ); goto ereqirq; } ++ ret =snd_soc_register_codec (&pdev->dev, ++ &soc_codec_dev_sh_hdmi, &sh_hdmi_dai,1 ); ++ if (ret < 0) { ++dev_err (&pdev->dev,"codec registration failed\n" ); ++ goto ecodec; ++ } ++ return 0; ++ecodec: ++free_irq (irq, hdmi); ereqirq:pm_runtime_disable (&pdev->dev);iounmap (hdmi->base);struct sh_mobile_hdmi_info *pdata = pdev->dev.platform_data;struct sh_hdmi *hdmi =platform_get_drvdata (pdev);struct resource *res =platform_get_resource (pdev,IORESOURCE_MEM ,0 ); +struct sh_mobile_lcdc_board_cfg *board_cfg = &pdata->lcd_chan->board_cfg;int irq =platform_get_irq (pdev,0 ); +snd_soc_unregister_codec (&pdev->dev); + - pdata->lcd_chan->board_cfg.display_on =NULL ; - pdata->lcd_chan->board_cfg.display_off =NULL ; - pdata->lcd_chan->board_cfg.board_data =NULL ; + board_cfg->display_on =NULL ; + board_cfg->display_off =NULL ; + board_cfg->board_data =NULL ; + board_cfg->owner =NULL ; +/* No new work will be scheduled, wait for running ISR */ free_irq (irq, hdmi); -pm_runtime_disable (&pdev->dev); +/* Wait for already scheduled work */ cancel_delayed_work_sync (&hdmi->edid_work); +pm_runtime_disable (&pdev->dev);clk_disable (hdmi->hdmi_clk);clk_put (hdmi->hdmi_clk);iounmap (hdmi->base);