From: Samuel Ortiz <sameo@openedhand.com>
To: Dmitry Baryshkov <dbaryshkov@gmail.com>
Cc: Ian Molton <spyro@f2s.com>, linux-fbdev-devel@lists.sourceforge.net
Subject: Re: [RESEND][PATCH 2/2] mfd: support tmiofb cell on tc6393xb
Date: Sat, 4 Oct 2008 00:56:49 +0200 [thread overview]
Message-ID: <20081003225648.GA4878@localdomain> (raw)
In-Reply-To: <1222763910-22816-2-git-send-email-dbaryshkov@gmail.com>
Hi Dmitry,
On Tue, Sep 30, 2008 at 12:38:30PM +0400, Dmitry Baryshkov wrote:
> Add support for tmiofb cell found in tc6393xb chip.
>
> Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
> Cc: Ian Molton <spyro@f2s.com>
> Cc: Samuel Ortiz <sameo@openedhand.com>
I also pushed this one to mfd-next.
It was conflicting with the OHCI one you sent me earlier, so I fixed the
merge issues and applied it to my tree.
If the fb people want both patches to go through their way, they should let
me know.
Cheers,
Samuel.
> ---
> drivers/mfd/tc6393xb.c | 113 ++++++++++++++++++++++++++++++++++++++++++
> include/linux/mfd/tc6393xb.h | 6 ++
> 2 files changed, 119 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/mfd/tc6393xb.c b/drivers/mfd/tc6393xb.c
> index e4c1c78..fc11e65 100644
> --- a/drivers/mfd/tc6393xb.c
> +++ b/drivers/mfd/tc6393xb.c
> @@ -113,6 +113,7 @@ struct tc6393xb {
> enum {
> TC6393XB_CELL_NAND,
> TC6393XB_CELL_MMC,
> + TC6393XB_CELL_FB,
> };
>
> /*--------------------------------------------------------------------------*/
> @@ -170,6 +171,104 @@ static struct resource __devinitdata tc6393xb_mmc_resources[] = {
> },
> };
>
> +static struct resource __devinitdata tc6393xb_fb_resources[] = {
> + {
> + .start = 0x5000,
> + .end = 0x51ff,
> + .flags = IORESOURCE_MEM,
> + },
> + {
> + .start = 0x0500,
> + .end = 0x05ff,
> + .flags = IORESOURCE_MEM,
> + },
> + {
> + .start = 0x100000,
> + .end = 0x1fffff,
> + .flags = IORESOURCE_MEM,
> + },
> + {
> + .start = IRQ_TC6393_FB,
> + .end = IRQ_TC6393_FB,
> + .flags = IORESOURCE_IRQ,
> + },
> +};
> +
> +static int tc6393xb_fb_enable(struct platform_device *dev)
> +{
> + struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent);
> + unsigned long flags;
> + u16 ccr;
> +
> + spin_lock_irqsave(&tc6393xb->lock, flags);
> +
> + ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR);
> + ccr &= ~SCR_CCR_MCLK_MASK;
> + ccr |= SCR_CCR_MCLK_48;
> + tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR);
> +
> + spin_unlock_irqrestore(&tc6393xb->lock, flags);
> +
> + return 0;
> +}
> +
> +static int tc6393xb_fb_disable(struct platform_device *dev)
> +{
> + struct tc6393xb *tc6393xb = dev_get_drvdata(dev->dev.parent);
> + unsigned long flags;
> + u16 ccr;
> +
> + spin_lock_irqsave(&tc6393xb->lock, flags);
> +
> + ccr = tmio_ioread16(tc6393xb->scr + SCR_CCR);
> + ccr &= ~SCR_CCR_MCLK_MASK;
> + ccr |= SCR_CCR_MCLK_OFF;
> + tmio_iowrite16(ccr, tc6393xb->scr + SCR_CCR);
> +
> + spin_unlock_irqrestore(&tc6393xb->lock, flags);
> +
> + return 0;
> +}
> +
> +int tc6393xb_lcd_set_power(struct platform_device *fb, bool on)
> +{
> + struct platform_device *dev = to_platform_device(fb->dev.parent);
> + struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
> + u8 fer;
> + unsigned long flags;
> +
> + spin_lock_irqsave(&tc6393xb->lock, flags);
> +
> + fer = ioread8(tc6393xb->scr + SCR_FER);
> + if (on)
> + fer |= SCR_FER_SLCDEN;
> + else
> + fer &= ~SCR_FER_SLCDEN;
> + iowrite8(fer, tc6393xb->scr + SCR_FER);
> +
> + spin_unlock_irqrestore(&tc6393xb->lock, flags);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(tc6393xb_lcd_set_power);
> +
> +int tc6393xb_lcd_mode(struct platform_device *fb,
> + const struct fb_videomode *mode) {
> + struct platform_device *dev = to_platform_device(fb->dev.parent);
> + struct tc6393xb *tc6393xb = platform_get_drvdata(dev);
> + unsigned long flags;
> +
> + spin_lock_irqsave(&tc6393xb->lock, flags);
> +
> + iowrite16(mode->pixclock, tc6393xb->scr + SCR_PLL1CR + 0);
> + iowrite16(mode->pixclock >> 16, tc6393xb->scr + SCR_PLL1CR + 2);
> +
> + spin_unlock_irqrestore(&tc6393xb->lock, flags);
> +
> + return 0;
> +}
> +EXPORT_SYMBOL(tc6393xb_lcd_mode);
> +
> static struct mfd_cell __devinitdata tc6393xb_cells[] = {
> [TC6393XB_CELL_NAND] = {
> .name = "tmio-nand",
> @@ -182,6 +281,15 @@ static struct mfd_cell __devinitdata tc6393xb_cells[] = {
> .num_resources = ARRAY_SIZE(tc6393xb_mmc_resources),
> .resources = tc6393xb_mmc_resources,
> },
> + [TC6393XB_CELL_FB] = {
> + .name = "tmio-fb",
> + .num_resources = ARRAY_SIZE(tc6393xb_fb_resources),
> + .resources = tc6393xb_fb_resources,
> + .enable = tc6393xb_fb_enable,
> + .suspend = tc6393xb_fb_disable,
> + .resume = tc6393xb_fb_enable,
> + .disable = tc6393xb_fb_disable,
> + },
> };
>
> /*--------------------------------------------------------------------------*/
> @@ -498,6 +606,11 @@ static int __devinit tc6393xb_probe(struct platform_device *dev)
> tc6393xb_cells[TC6393XB_CELL_MMC].data_size =
> sizeof(tc6393xb_cells[TC6393XB_CELL_MMC]);
>
> + tc6393xb_cells[TC6393XB_CELL_FB].driver_data = tcpd->fb_data;
> + tc6393xb_cells[TC6393XB_CELL_FB].platform_data =
> + &tc6393xb_cells[TC6393XB_CELL_FB];
> + tc6393xb_cells[TC6393XB_CELL_FB].data_size =
> + sizeof(tc6393xb_cells[TC6393XB_CELL_FB]);
>
> ret = mfd_add_devices(&dev->dev, dev->id,
> tc6393xb_cells, ARRAY_SIZE(tc6393xb_cells),
> diff --git a/include/linux/mfd/tc6393xb.h b/include/linux/mfd/tc6393xb.h
> index fec7b3f..28a80a2 100644
> --- a/include/linux/mfd/tc6393xb.h
> +++ b/include/linux/mfd/tc6393xb.h
> @@ -33,13 +33,19 @@ struct tc6393xb_platform_data {
> int gpio_base;
>
> struct tmio_nand_data *nand_data;
> + struct tmio_fb_data *fb_data;
> };
>
> +extern int tc6393xb_lcd_mode(struct platform_device *fb,
> + const struct fb_videomode *mode);
> +extern int tc6393xb_lcd_set_power(struct platform_device *fb, bool on);
> +
> /*
> * Relative to irq_base
> */
> #define IRQ_TC6393_NAND 0
> #define IRQ_TC6393_MMC 1
> +#define IRQ_TC6393_FB 4
>
> #define TC6393XB_NR_IRQS 8
>
> --
> 1.5.6.5
>
--
Intel Open Source Technology Centre
http://oss.intel.com/
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
next prev parent reply other threads:[~2008-10-03 22:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-30 8:38 [RESEND][PATCH 1/2] fbdev: add new TMIO framebuffer driver Dmitry Baryshkov
2008-09-30 8:38 ` [RESEND][PATCH 2/2] mfd: support tmiofb cell on tc6393xb Dmitry Baryshkov
2008-10-03 22:56 ` Samuel Ortiz [this message]
2008-09-30 9:17 ` [RESEND][PATCH 1/2] fbdev: add new TMIO framebuffer driver Geert Uytterhoeven
2008-09-30 14:37 ` Ian Molton
2008-09-30 22:04 ` Krzysztof Helt
2008-10-04 13:38 ` Dmitry
2008-10-03 9:23 ` Andrew Morton
2008-10-03 11:35 ` Ian Molton
2008-10-04 21:41 ` Dmitry
2008-10-04 21:58 ` Andrew Morton
2008-10-05 8:09 ` Dmitry
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081003225648.GA4878@localdomain \
--to=sameo@openedhand.com \
--cc=dbaryshkov@gmail.com \
--cc=linux-fbdev-devel@lists.sourceforge.net \
--cc=spyro@f2s.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.