提交 95985725 编写于 作者: L Linus Torvalds

Merge branch 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6

* 'rmobile-latest' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
  mmc: Add MMC_PROGRESS_*
  mmc, ARM: Rename SuperH Mobile ARM zboot helpers
  ARM: mach-shmobile: add coherent DMA mask to CEU camera devices
  ARM: mach-shmobile: Dynamic backlight control for Mackerel
...@@ -10,7 +10,8 @@ ...@@ -10,7 +10,8 @@
*/ */
#include <linux/mmc/sh_mmcif.h> #include <linux/mmc/sh_mmcif.h>
#include <mach/mmcif.h> #include <linux/mmc/boot.h>
#include <mach/mmc.h>
#define MMCIF_BASE (void __iomem *)0xe6bd0000 #define MMCIF_BASE (void __iomem *)0xe6bd0000
...@@ -41,8 +42,8 @@ ...@@ -41,8 +42,8 @@
*/ */
asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len) asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len)
{ {
mmcif_init_progress(); mmc_init_progress();
mmcif_update_progress(MMCIF_PROGRESS_ENTER); mmc_update_progress(MMC_PROGRESS_ENTER);
/* Initialise MMC /* Initialise MMC
* registers: PORT84CR-PORT92CR * registers: PORT84CR-PORT92CR
...@@ -68,12 +69,12 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len) ...@@ -68,12 +69,12 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len)
/* Enable clock to MMC hardware block */ /* Enable clock to MMC hardware block */
__raw_writel(__raw_readl(SMSTPCR3) & ~(1 << 12), SMSTPCR3); __raw_writel(__raw_readl(SMSTPCR3) & ~(1 << 12), SMSTPCR3);
mmcif_update_progress(MMCIF_PROGRESS_INIT); mmc_update_progress(MMC_PROGRESS_INIT);
/* setup MMCIF hardware */ /* setup MMCIF hardware */
sh_mmcif_boot_init(MMCIF_BASE); sh_mmcif_boot_init(MMCIF_BASE);
mmcif_update_progress(MMCIF_PROGRESS_LOAD); mmc_update_progress(MMC_PROGRESS_LOAD);
/* load kernel via MMCIF interface */ /* load kernel via MMCIF interface */
sh_mmcif_boot_do_read(MMCIF_BASE, 2, /* Kernel is at block 2 */ sh_mmcif_boot_do_read(MMCIF_BASE, 2, /* Kernel is at block 2 */
...@@ -83,5 +84,5 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len) ...@@ -83,5 +84,5 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long len)
/* Disable clock to MMC hardware block */ /* Disable clock to MMC hardware block */
__raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3); __raw_writel(__raw_readl(SMSTPCR3) & (1 << 12), SMSTPCR3);
mmcif_update_progress(MMCIF_PROGRESS_DONE); mmc_update_progress(MMC_PROGRESS_DONE);
} }
...@@ -923,7 +923,8 @@ static struct platform_device ceu_device = { ...@@ -923,7 +923,8 @@ static struct platform_device ceu_device = {
.num_resources = ARRAY_SIZE(ceu_resources), .num_resources = ARRAY_SIZE(ceu_resources),
.resource = ceu_resources, .resource = ceu_resources,
.dev = { .dev = {
.platform_data = &sh_mobile_ceu_info, .platform_data = &sh_mobile_ceu_info,
.coherent_dma_mask = 0xffffffff,
}, },
}; };
......
...@@ -295,6 +295,18 @@ static struct fb_videomode mackerel_lcdc_modes[] = { ...@@ -295,6 +295,18 @@ static struct fb_videomode mackerel_lcdc_modes[] = {
}, },
}; };
static int mackerel_set_brightness(void *board_data, int brightness)
{
gpio_set_value(GPIO_PORT31, brightness);
return 0;
}
static int mackerel_get_brightness(void *board_data)
{
return gpio_get_value(GPIO_PORT31);
}
static struct sh_mobile_lcdc_info lcdc_info = { static struct sh_mobile_lcdc_info lcdc_info = {
.clock_source = LCDC_CLK_BUS, .clock_source = LCDC_CLK_BUS,
.ch[0] = { .ch[0] = {
...@@ -307,6 +319,14 @@ static struct sh_mobile_lcdc_info lcdc_info = { ...@@ -307,6 +319,14 @@ static struct sh_mobile_lcdc_info lcdc_info = {
.flags = 0, .flags = 0,
.lcd_size_cfg.width = 152, .lcd_size_cfg.width = 152,
.lcd_size_cfg.height = 91, .lcd_size_cfg.height = 91,
.board_cfg = {
.set_brightness = mackerel_set_brightness,
.get_brightness = mackerel_get_brightness,
},
.bl_info = {
.name = "sh_mobile_lcdc_bl",
.max_brightness = 1,
},
} }
}; };
...@@ -901,7 +921,8 @@ static struct platform_device ceu_device = { ...@@ -901,7 +921,8 @@ static struct platform_device ceu_device = {
.num_resources = ARRAY_SIZE(ceu_resources), .num_resources = ARRAY_SIZE(ceu_resources),
.resource = ceu_resources, .resource = ceu_resources,
.dev = { .dev = {
.platform_data = &sh_mobile_ceu_info, .platform_data = &sh_mobile_ceu_info,
.coherent_dma_mask = 0xffffffff,
}, },
}; };
...@@ -1059,7 +1080,7 @@ static void __init mackerel_init(void) ...@@ -1059,7 +1080,7 @@ static void __init mackerel_init(void)
gpio_request(GPIO_FN_LCDDCK, NULL); gpio_request(GPIO_FN_LCDDCK, NULL);
gpio_request(GPIO_PORT31, NULL); /* backlight */ gpio_request(GPIO_PORT31, NULL); /* backlight */
gpio_direction_output(GPIO_PORT31, 1); gpio_direction_output(GPIO_PORT31, 0); /* off by default */
gpio_request(GPIO_PORT151, NULL); /* LCDDON */ gpio_request(GPIO_PORT151, NULL); /* LCDDON */
gpio_direction_output(GPIO_PORT151, 1); gpio_direction_output(GPIO_PORT151, 1);
......
#ifndef MMCIF_AP4EB_H #ifndef MMC_AP4EB_H
#define MMCIF_AP4EB_H #define MMC_AP4EB_H
#define PORT185CR (void __iomem *)0xe60520b9 #define PORT185CR (void __iomem *)0xe60520b9
#define PORT186CR (void __iomem *)0xe60520ba #define PORT186CR (void __iomem *)0xe60520ba
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#define PORTR191_160DR (void __iomem *)0xe6056014 #define PORTR191_160DR (void __iomem *)0xe6056014
static inline void mmcif_init_progress(void) static inline void mmc_init_progress(void)
{ {
/* Initialise LEDS1-4 /* Initialise LEDS1-4
* registers: PORT185CR-PORT188CR (LED1-LED4 Control) * registers: PORT185CR-PORT188CR (LED1-LED4 Control)
...@@ -20,10 +20,10 @@ static inline void mmcif_init_progress(void) ...@@ -20,10 +20,10 @@ static inline void mmcif_init_progress(void)
__raw_writeb(0x10, PORT188CR); __raw_writeb(0x10, PORT188CR);
} }
static inline void mmcif_update_progress(int n) static inline void mmc_update_progress(int n)
{ {
__raw_writel((__raw_readl(PORTR191_160DR) & ~(0xf << 25)) | __raw_writel((__raw_readl(PORTR191_160DR) & ~(0xf << 25)) |
(1 << (25 + n)), PORTR191_160DR); (1 << (25 + n)), PORTR191_160DR);
} }
#endif /* MMCIF_AP4EB_H */ #endif /* MMC_AP4EB_H */
#ifndef MMCIF_MACKEREL_H #ifndef MMC_MACKEREL_H
#define MMCIF_MACKEREL_H #define MMC_MACKEREL_H
#define PORT0CR (void __iomem *)0xe6051000 #define PORT0CR (void __iomem *)0xe6051000
#define PORT1CR (void __iomem *)0xe6051001 #define PORT1CR (void __iomem *)0xe6051001
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#define PORTR031_000DR (void __iomem *)0xe6055000 #define PORTR031_000DR (void __iomem *)0xe6055000
#define PORTL159_128DR (void __iomem *)0xe6054010 #define PORTL159_128DR (void __iomem *)0xe6054010
static inline void mmcif_init_progress(void) static inline void mmc_init_progress(void)
{ {
/* Initialise LEDS0-3 /* Initialise LEDS0-3
* registers: PORT0CR-PORT2CR,PORT159CR (LED0-LED3 Control) * registers: PORT0CR-PORT2CR,PORT159CR (LED0-LED3 Control)
...@@ -21,7 +21,7 @@ static inline void mmcif_init_progress(void) ...@@ -21,7 +21,7 @@ static inline void mmcif_init_progress(void)
__raw_writeb(0x10, PORT159CR); __raw_writeb(0x10, PORT159CR);
} }
static inline void mmcif_update_progress(int n) static inline void mmc_update_progress(int n)
{ {
unsigned a = 0, b = 0; unsigned a = 0, b = 0;
...@@ -35,5 +35,4 @@ static inline void mmcif_update_progress(int n) ...@@ -35,5 +35,4 @@ static inline void mmcif_update_progress(int n)
__raw_writel((__raw_readl(PORTL159_128DR) & ~(1 << 31)) | b, __raw_writel((__raw_readl(PORTL159_128DR) & ~(1 << 31)) | b,
PORTL159_128DR); PORTL159_128DR);
} }
#endif /* MMC_MACKEREL_H */
#endif /* MMCIF_MACKEREL_H */
#ifndef MMCIF_H #ifndef MMC_H
#define MMCIF_H #define MMC_H
/************************************************** /**************************************************
* *
...@@ -8,11 +8,11 @@ ...@@ -8,11 +8,11 @@
**************************************************/ **************************************************/
#ifdef CONFIG_MACH_AP4EVB #ifdef CONFIG_MACH_AP4EVB
#include "mach/mmcif-ap4eb.h" #include "mach/mmc-ap4eb.h"
#elif CONFIG_MACH_MACKEREL #elif CONFIG_MACH_MACKEREL
#include "mach/mmcif-mackerel.h" #include "mach/mmc-mackerel.h"
#else #else
#error "unsupported board." #error "unsupported board."
#endif #endif
#endif /* MMCIF_H */ #endif /* MMC_H */
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
*/ */
#include <linux/mmc/sh_mmcif.h> #include <linux/mmc/sh_mmcif.h>
#include <linux/mmc/boot.h>
#include <mach/romimage.h> #include <mach/romimage.h>
#define MMCIF_BASE (void __iomem *)0xa4ca0000 #define MMCIF_BASE (void __iomem *)0xa4ca0000
...@@ -29,7 +30,7 @@ ...@@ -29,7 +30,7 @@
*/ */
asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes) asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes)
{ {
mmcif_update_progress(MMCIF_PROGRESS_ENTER); mmcif_update_progress(MMC_PROGRESS_ENTER);
/* enable clock to the MMCIF hardware block */ /* enable clock to the MMCIF hardware block */
__raw_writel(__raw_readl(MSTPCR2) & ~0x20000000, MSTPCR2); __raw_writel(__raw_readl(MSTPCR2) & ~0x20000000, MSTPCR2);
...@@ -52,12 +53,12 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes) ...@@ -52,12 +53,12 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes)
/* high drive capability for MMC pins */ /* high drive capability for MMC pins */
__raw_writew(__raw_readw(DRVCRA) | 0x3000, DRVCRA); __raw_writew(__raw_readw(DRVCRA) | 0x3000, DRVCRA);
mmcif_update_progress(MMCIF_PROGRESS_INIT); mmcif_update_progress(MMC_PROGRESS_INIT);
/* setup MMCIF hardware */ /* setup MMCIF hardware */
sh_mmcif_boot_init(MMCIF_BASE); sh_mmcif_boot_init(MMCIF_BASE);
mmcif_update_progress(MMCIF_PROGRESS_LOAD); mmcif_update_progress(MMC_PROGRESS_LOAD);
/* load kernel via MMCIF interface */ /* load kernel via MMCIF interface */
sh_mmcif_boot_do_read(MMCIF_BASE, 512, sh_mmcif_boot_do_read(MMCIF_BASE, 512,
...@@ -67,5 +68,5 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes) ...@@ -67,5 +68,5 @@ asmlinkage void mmcif_loader(unsigned char *buf, unsigned long no_bytes)
/* disable clock to the MMCIF hardware block */ /* disable clock to the MMCIF hardware block */
__raw_writel(__raw_readl(MSTPCR2) | 0x20000000, MSTPCR2); __raw_writel(__raw_readl(MSTPCR2) | 0x20000000, MSTPCR2);
mmcif_update_progress(MMCIF_PROGRESS_DONE); mmcif_update_progress(MMC_PROGRESS_DONE);
} }
#ifndef MMC_BOOT_H
#define MMC_BOOT_H
enum { MMC_PROGRESS_ENTER, MMC_PROGRESS_INIT,
MMC_PROGRESS_LOAD, MMC_PROGRESS_DONE };
#endif
...@@ -104,9 +104,6 @@ static inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val) ...@@ -104,9 +104,6 @@ static inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val)
#define SH_MMCIF_BBS 512 /* boot block size */ #define SH_MMCIF_BBS 512 /* boot block size */
enum { MMCIF_PROGRESS_ENTER, MMCIF_PROGRESS_INIT,
MMCIF_PROGRESS_LOAD, MMCIF_PROGRESS_DONE };
static inline void sh_mmcif_boot_cmd_send(void __iomem *base, static inline void sh_mmcif_boot_cmd_send(void __iomem *base,
unsigned long cmd, unsigned long arg) unsigned long cmd, unsigned long arg)
{ {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册