Merge branch 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* 'rmobile-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: mmc: sh_mmcif: Convert extern inline to static inline. ARM: mach-shmobile: Allow GPIO chips to register IRQ mappings. ARM: mach-shmobile: fix sh7372 after a recent clock framework rework ARM: mach-shmobile: include drivers/sh/Kconfig ARM: mach-shmobile: ap4evb: Add HDMI sound support ARM: mach-shmobile: clock-sh7372: Add FSIDIV clock support ARM: shmobile: remove sh_timer_config clk member
This commit is contained in:
commit
934648f044
|
@ -116,4 +116,6 @@ endmenu
|
||||||
config SH_CLK_CPG
|
config SH_CLK_CPG
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
source "drivers/sh/Kconfig"
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -565,12 +565,50 @@ static struct platform_device *qhd_devices[] __initdata = {
|
||||||
|
|
||||||
/* FSI */
|
/* FSI */
|
||||||
#define IRQ_FSI evt2irq(0x1840)
|
#define IRQ_FSI evt2irq(0x1840)
|
||||||
|
|
||||||
|
static int fsi_set_rate(int is_porta, int rate)
|
||||||
|
{
|
||||||
|
struct clk *fsib_clk;
|
||||||
|
struct clk *fdiv_clk = &sh7372_fsidivb_clk;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
/* set_rate is not needed if port A */
|
||||||
|
if (is_porta)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
fsib_clk = clk_get(NULL, "fsib_clk");
|
||||||
|
if (IS_ERR(fsib_clk))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
switch (rate) {
|
||||||
|
case 48000:
|
||||||
|
clk_set_rate(fsib_clk, clk_round_rate(fsib_clk, 85428000));
|
||||||
|
clk_set_rate(fdiv_clk, clk_round_rate(fdiv_clk, 12204000));
|
||||||
|
ret = SH_FSI_ACKMD_256 | SH_FSI_BPFMD_64;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
pr_err("unsupported rate in FSI2 port B\n");
|
||||||
|
ret = -EINVAL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
clk_put(fsib_clk);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static struct sh_fsi_platform_info fsi_info = {
|
static struct sh_fsi_platform_info fsi_info = {
|
||||||
.porta_flags = SH_FSI_BRS_INV |
|
.porta_flags = SH_FSI_BRS_INV |
|
||||||
SH_FSI_OUT_SLAVE_MODE |
|
SH_FSI_OUT_SLAVE_MODE |
|
||||||
SH_FSI_IN_SLAVE_MODE |
|
SH_FSI_IN_SLAVE_MODE |
|
||||||
SH_FSI_OFMT(PCM) |
|
SH_FSI_OFMT(PCM) |
|
||||||
SH_FSI_IFMT(PCM),
|
SH_FSI_IFMT(PCM),
|
||||||
|
|
||||||
|
.portb_flags = SH_FSI_BRS_INV |
|
||||||
|
SH_FSI_BRM_INV |
|
||||||
|
SH_FSI_LRS_INV |
|
||||||
|
SH_FSI_OFMT(SPDIF),
|
||||||
|
.set_rate = fsi_set_rate,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource fsi_resources[] = {
|
static struct resource fsi_resources[] = {
|
||||||
|
@ -634,6 +672,7 @@ static struct platform_device lcdc1_device = {
|
||||||
static struct sh_mobile_hdmi_info hdmi_info = {
|
static struct sh_mobile_hdmi_info hdmi_info = {
|
||||||
.lcd_chan = &sh_mobile_lcdc1_info.ch[0],
|
.lcd_chan = &sh_mobile_lcdc1_info.ch[0],
|
||||||
.lcd_dev = &lcdc1_device.dev,
|
.lcd_dev = &lcdc1_device.dev,
|
||||||
|
.flags = HDMI_SND_SRC_SPDIF,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource hdmi_resources[] = {
|
static struct resource hdmi_resources[] = {
|
||||||
|
@ -992,6 +1031,7 @@ static void __init ap4evb_map_io(void)
|
||||||
|
|
||||||
#define GPIO_PORT9CR 0xE6051009
|
#define GPIO_PORT9CR 0xE6051009
|
||||||
#define GPIO_PORT10CR 0xE605100A
|
#define GPIO_PORT10CR 0xE605100A
|
||||||
|
#define USCCR1 0xE6058144
|
||||||
static void __init ap4evb_init(void)
|
static void __init ap4evb_init(void)
|
||||||
{
|
{
|
||||||
u32 srcr4;
|
u32 srcr4;
|
||||||
|
@ -1062,7 +1102,7 @@ static void __init ap4evb_init(void)
|
||||||
/* setup USB phy */
|
/* setup USB phy */
|
||||||
__raw_writew(0x8a0a, 0xE6058130); /* USBCR2 */
|
__raw_writew(0x8a0a, 0xE6058130); /* USBCR2 */
|
||||||
|
|
||||||
/* enable FSI2 */
|
/* enable FSI2 port A (ak4643) */
|
||||||
gpio_request(GPIO_FN_FSIAIBT, NULL);
|
gpio_request(GPIO_FN_FSIAIBT, NULL);
|
||||||
gpio_request(GPIO_FN_FSIAILR, NULL);
|
gpio_request(GPIO_FN_FSIAILR, NULL);
|
||||||
gpio_request(GPIO_FN_FSIAISLD, NULL);
|
gpio_request(GPIO_FN_FSIAISLD, NULL);
|
||||||
|
@ -1079,6 +1119,10 @@ static void __init ap4evb_init(void)
|
||||||
gpio_request(GPIO_PORT41, NULL);
|
gpio_request(GPIO_PORT41, NULL);
|
||||||
gpio_direction_input(GPIO_PORT41);
|
gpio_direction_input(GPIO_PORT41);
|
||||||
|
|
||||||
|
/* setup FSI2 port B (HDMI) */
|
||||||
|
gpio_request(GPIO_FN_FSIBCK, NULL);
|
||||||
|
__raw_writew(__raw_readw(USCCR1) & ~(1 << 6), USCCR1); /* use SPDIF */
|
||||||
|
|
||||||
/* set SPU2 clock to 119.6 MHz */
|
/* set SPU2 clock to 119.6 MHz */
|
||||||
clk = clk_get(NULL, "spu_clk");
|
clk = clk_get(NULL, "spu_clk");
|
||||||
if (!IS_ERR(clk)) {
|
if (!IS_ERR(clk)) {
|
||||||
|
|
|
@ -50,6 +50,9 @@
|
||||||
#define SMSTPCR3 0xe615013c
|
#define SMSTPCR3 0xe615013c
|
||||||
#define SMSTPCR4 0xe6150140
|
#define SMSTPCR4 0xe6150140
|
||||||
|
|
||||||
|
#define FSIDIVA 0xFE1F8000
|
||||||
|
#define FSIDIVB 0xFE1F8008
|
||||||
|
|
||||||
/* Platforms must set frequency on their DV_CLKI pin */
|
/* Platforms must set frequency on their DV_CLKI pin */
|
||||||
struct clk sh7372_dv_clki_clk = {
|
struct clk sh7372_dv_clki_clk = {
|
||||||
};
|
};
|
||||||
|
@ -288,6 +291,7 @@ struct clk sh7372_pllc2_clk = {
|
||||||
.ops = &pllc2_clk_ops,
|
.ops = &pllc2_clk_ops,
|
||||||
.parent = &extal1_div2_clk,
|
.parent = &extal1_div2_clk,
|
||||||
.freq_table = pllc2_freq_table,
|
.freq_table = pllc2_freq_table,
|
||||||
|
.nr_freqs = ARRAY_SIZE(pllc2_freq_table) - 1,
|
||||||
.parent_table = pllc2_parent,
|
.parent_table = pllc2_parent,
|
||||||
.parent_num = ARRAY_SIZE(pllc2_parent),
|
.parent_num = ARRAY_SIZE(pllc2_parent),
|
||||||
};
|
};
|
||||||
|
@ -417,6 +421,101 @@ static struct clk div6_reparent_clks[DIV6_REPARENT_NR] = {
|
||||||
fsibckcr_parent, ARRAY_SIZE(fsibckcr_parent), 6, 2),
|
fsibckcr_parent, ARRAY_SIZE(fsibckcr_parent), 6, 2),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* FSI DIV */
|
||||||
|
static unsigned long fsidiv_recalc(struct clk *clk)
|
||||||
|
{
|
||||||
|
unsigned long value;
|
||||||
|
|
||||||
|
value = __raw_readl(clk->mapping->base);
|
||||||
|
|
||||||
|
if ((value & 0x3) != 0x3)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
value >>= 16;
|
||||||
|
if (value < 2)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
return clk->parent->rate / value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static long fsidiv_round_rate(struct clk *clk, unsigned long rate)
|
||||||
|
{
|
||||||
|
return clk_rate_div_range_round(clk, 2, 0xffff, rate);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void fsidiv_disable(struct clk *clk)
|
||||||
|
{
|
||||||
|
__raw_writel(0, clk->mapping->base);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fsidiv_enable(struct clk *clk)
|
||||||
|
{
|
||||||
|
unsigned long value;
|
||||||
|
|
||||||
|
value = __raw_readl(clk->mapping->base) >> 16;
|
||||||
|
if (value < 2) {
|
||||||
|
fsidiv_disable(clk);
|
||||||
|
return -ENOENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
__raw_writel((value << 16) | 0x3, clk->mapping->base);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int fsidiv_set_rate(struct clk *clk,
|
||||||
|
unsigned long rate, int algo_id)
|
||||||
|
{
|
||||||
|
int idx;
|
||||||
|
|
||||||
|
if (clk->parent->rate == rate) {
|
||||||
|
fsidiv_disable(clk);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
idx = (clk->parent->rate / rate) & 0xffff;
|
||||||
|
if (idx < 2)
|
||||||
|
return -ENOENT;
|
||||||
|
|
||||||
|
__raw_writel(idx << 16, clk->mapping->base);
|
||||||
|
return fsidiv_enable(clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct clk_ops fsidiv_clk_ops = {
|
||||||
|
.recalc = fsidiv_recalc,
|
||||||
|
.round_rate = fsidiv_round_rate,
|
||||||
|
.set_rate = fsidiv_set_rate,
|
||||||
|
.enable = fsidiv_enable,
|
||||||
|
.disable = fsidiv_disable,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk_mapping sh7372_fsidiva_clk_mapping = {
|
||||||
|
.phys = FSIDIVA,
|
||||||
|
.len = 8,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct clk sh7372_fsidiva_clk = {
|
||||||
|
.ops = &fsidiv_clk_ops,
|
||||||
|
.parent = &div6_reparent_clks[DIV6_FSIA], /* late install */
|
||||||
|
.mapping = &sh7372_fsidiva_clk_mapping,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk_mapping sh7372_fsidivb_clk_mapping = {
|
||||||
|
.phys = FSIDIVB,
|
||||||
|
.len = 8,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct clk sh7372_fsidivb_clk = {
|
||||||
|
.ops = &fsidiv_clk_ops,
|
||||||
|
.parent = &div6_reparent_clks[DIV6_FSIB], /* late install */
|
||||||
|
.mapping = &sh7372_fsidivb_clk_mapping,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct clk *late_main_clks[] = {
|
||||||
|
&sh7372_fsidiva_clk,
|
||||||
|
&sh7372_fsidivb_clk,
|
||||||
|
};
|
||||||
|
|
||||||
enum { MSTP001,
|
enum { MSTP001,
|
||||||
MSTP131, MSTP130,
|
MSTP131, MSTP130,
|
||||||
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
|
MSTP129, MSTP128, MSTP127, MSTP126, MSTP125,
|
||||||
|
@ -585,6 +684,9 @@ void __init sh7372_clock_init(void)
|
||||||
if (!ret)
|
if (!ret)
|
||||||
ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR);
|
ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR);
|
||||||
|
|
||||||
|
for (k = 0; !ret && (k < ARRAY_SIZE(late_main_clks)); k++)
|
||||||
|
ret = clk_register(late_main_clks[k]);
|
||||||
|
|
||||||
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
|
clkdev_add_table(lookups, ARRAY_SIZE(lookups));
|
||||||
|
|
||||||
if (!ret)
|
if (!ret)
|
||||||
|
|
|
@ -35,12 +35,12 @@ static inline int gpio_cansleep(unsigned gpio)
|
||||||
|
|
||||||
static inline int gpio_to_irq(unsigned gpio)
|
static inline int gpio_to_irq(unsigned gpio)
|
||||||
{
|
{
|
||||||
return -ENOSYS;
|
return __gpio_to_irq(gpio);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int irq_to_gpio(unsigned int irq)
|
static inline int irq_to_gpio(unsigned int irq)
|
||||||
{
|
{
|
||||||
return -EINVAL;
|
return -ENOSYS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_GPIOLIB */
|
#endif /* CONFIG_GPIOLIB */
|
||||||
|
|
|
@ -464,5 +464,7 @@ extern struct clk sh7372_dv_clki_div2_clk;
|
||||||
extern struct clk sh7372_pllc2_clk;
|
extern struct clk sh7372_pllc2_clk;
|
||||||
extern struct clk sh7372_fsiack_clk;
|
extern struct clk sh7372_fsiack_clk;
|
||||||
extern struct clk sh7372_fsibck_clk;
|
extern struct clk sh7372_fsibck_clk;
|
||||||
|
extern struct clk sh7372_fsidiva_clk;
|
||||||
|
extern struct clk sh7372_fsidivb_clk;
|
||||||
|
|
||||||
#endif /* __ASM_SH7372_H__ */
|
#endif /* __ASM_SH7372_H__ */
|
||||||
|
|
|
@ -615,15 +615,11 @@ static int sh_cmt_setup(struct sh_cmt_priv *p, struct platform_device *pdev)
|
||||||
|
|
||||||
/* get hold of clock */
|
/* get hold of clock */
|
||||||
p->clk = clk_get(&p->pdev->dev, "cmt_fck");
|
p->clk = clk_get(&p->pdev->dev, "cmt_fck");
|
||||||
if (IS_ERR(p->clk)) {
|
|
||||||
dev_warn(&p->pdev->dev, "using deprecated clock lookup\n");
|
|
||||||
p->clk = clk_get(&p->pdev->dev, cfg->clk);
|
|
||||||
if (IS_ERR(p->clk)) {
|
if (IS_ERR(p->clk)) {
|
||||||
dev_err(&p->pdev->dev, "cannot get clock\n");
|
dev_err(&p->pdev->dev, "cannot get clock\n");
|
||||||
ret = PTR_ERR(p->clk);
|
ret = PTR_ERR(p->clk);
|
||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (resource_size(res) == 6) {
|
if (resource_size(res) == 6) {
|
||||||
p->width = 16;
|
p->width = 16;
|
||||||
|
|
|
@ -286,15 +286,11 @@ static int sh_mtu2_setup(struct sh_mtu2_priv *p, struct platform_device *pdev)
|
||||||
|
|
||||||
/* get hold of clock */
|
/* get hold of clock */
|
||||||
p->clk = clk_get(&p->pdev->dev, "mtu2_fck");
|
p->clk = clk_get(&p->pdev->dev, "mtu2_fck");
|
||||||
if (IS_ERR(p->clk)) {
|
|
||||||
dev_warn(&p->pdev->dev, "using deprecated clock lookup\n");
|
|
||||||
p->clk = clk_get(&p->pdev->dev, cfg->clk);
|
|
||||||
if (IS_ERR(p->clk)) {
|
if (IS_ERR(p->clk)) {
|
||||||
dev_err(&p->pdev->dev, "cannot get clock\n");
|
dev_err(&p->pdev->dev, "cannot get clock\n");
|
||||||
ret = PTR_ERR(p->clk);
|
ret = PTR_ERR(p->clk);
|
||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev),
|
return sh_mtu2_register(p, (char *)dev_name(&p->pdev->dev),
|
||||||
cfg->clockevent_rating);
|
cfg->clockevent_rating);
|
||||||
|
|
|
@ -392,15 +392,11 @@ static int sh_tmu_setup(struct sh_tmu_priv *p, struct platform_device *pdev)
|
||||||
|
|
||||||
/* get hold of clock */
|
/* get hold of clock */
|
||||||
p->clk = clk_get(&p->pdev->dev, "tmu_fck");
|
p->clk = clk_get(&p->pdev->dev, "tmu_fck");
|
||||||
if (IS_ERR(p->clk)) {
|
|
||||||
dev_warn(&p->pdev->dev, "using deprecated clock lookup\n");
|
|
||||||
p->clk = clk_get(&p->pdev->dev, cfg->clk);
|
|
||||||
if (IS_ERR(p->clk)) {
|
if (IS_ERR(p->clk)) {
|
||||||
dev_err(&p->pdev->dev, "cannot get clock\n");
|
dev_err(&p->pdev->dev, "cannot get clock\n");
|
||||||
ret = PTR_ERR(p->clk);
|
ret = PTR_ERR(p->clk);
|
||||||
goto err1;
|
goto err1;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return sh_tmu_register(p, (char *)dev_name(&p->pdev->dev),
|
return sh_tmu_register(p, (char *)dev_name(&p->pdev->dev),
|
||||||
cfg->clockevent_rating,
|
cfg->clockevent_rating,
|
||||||
|
|
|
@ -59,19 +59,19 @@ struct sh_mmcif_plat_data {
|
||||||
#define MMCIF_CE_HOST_STS2 0x0000004C
|
#define MMCIF_CE_HOST_STS2 0x0000004C
|
||||||
#define MMCIF_CE_VERSION 0x0000007C
|
#define MMCIF_CE_VERSION 0x0000007C
|
||||||
|
|
||||||
extern inline u32 sh_mmcif_readl(void __iomem *addr, int reg)
|
static inline u32 sh_mmcif_readl(void __iomem *addr, int reg)
|
||||||
{
|
{
|
||||||
return readl(addr + reg);
|
return readl(addr + reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val)
|
static inline void sh_mmcif_writel(void __iomem *addr, int reg, u32 val)
|
||||||
{
|
{
|
||||||
writel(val, addr + reg);
|
writel(val, addr + reg);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define SH_MMCIF_BBS 512 /* boot block size */
|
#define SH_MMCIF_BBS 512 /* boot block size */
|
||||||
|
|
||||||
extern 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)
|
||||||
{
|
{
|
||||||
sh_mmcif_writel(base, MMCIF_CE_INT, 0);
|
sh_mmcif_writel(base, MMCIF_CE_INT, 0);
|
||||||
|
@ -79,7 +79,7 @@ extern inline void sh_mmcif_boot_cmd_send(void __iomem *base,
|
||||||
sh_mmcif_writel(base, MMCIF_CE_CMD_SET, cmd);
|
sh_mmcif_writel(base, MMCIF_CE_CMD_SET, cmd);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask)
|
static inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask)
|
||||||
{
|
{
|
||||||
unsigned long tmp;
|
unsigned long tmp;
|
||||||
int cnt;
|
int cnt;
|
||||||
|
@ -95,14 +95,14 @@ extern inline int sh_mmcif_boot_cmd_poll(void __iomem *base, unsigned long mask)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline int sh_mmcif_boot_cmd(void __iomem *base,
|
static inline int sh_mmcif_boot_cmd(void __iomem *base,
|
||||||
unsigned long cmd, unsigned long arg)
|
unsigned long cmd, unsigned long arg)
|
||||||
{
|
{
|
||||||
sh_mmcif_boot_cmd_send(base, cmd, arg);
|
sh_mmcif_boot_cmd_send(base, cmd, arg);
|
||||||
return sh_mmcif_boot_cmd_poll(base, 0x00010000);
|
return sh_mmcif_boot_cmd_poll(base, 0x00010000);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline int sh_mmcif_boot_do_read_single(void __iomem *base,
|
static inline int sh_mmcif_boot_do_read_single(void __iomem *base,
|
||||||
unsigned int block_nr,
|
unsigned int block_nr,
|
||||||
unsigned long *buf)
|
unsigned long *buf)
|
||||||
{
|
{
|
||||||
|
@ -125,7 +125,7 @@ extern inline int sh_mmcif_boot_do_read_single(void __iomem *base,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline int sh_mmcif_boot_do_read(void __iomem *base,
|
static inline int sh_mmcif_boot_do_read(void __iomem *base,
|
||||||
unsigned long first_block,
|
unsigned long first_block,
|
||||||
unsigned long nr_blocks,
|
unsigned long nr_blocks,
|
||||||
void *buf)
|
void *buf)
|
||||||
|
@ -143,7 +143,7 @@ extern inline int sh_mmcif_boot_do_read(void __iomem *base,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline void sh_mmcif_boot_init(void __iomem *base)
|
static inline void sh_mmcif_boot_init(void __iomem *base)
|
||||||
{
|
{
|
||||||
unsigned long tmp;
|
unsigned long tmp;
|
||||||
|
|
||||||
|
@ -177,7 +177,7 @@ extern inline void sh_mmcif_boot_init(void __iomem *base)
|
||||||
sh_mmcif_boot_cmd(base, 0x03400040, 0x00010000);
|
sh_mmcif_boot_cmd(base, 0x03400040, 0x00010000);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern inline void sh_mmcif_boot_slurp(void __iomem *base,
|
static inline void sh_mmcif_boot_slurp(void __iomem *base,
|
||||||
unsigned char *buf,
|
unsigned char *buf,
|
||||||
unsigned long no_bytes)
|
unsigned long no_bytes)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,6 @@ struct sh_timer_config {
|
||||||
char *name;
|
char *name;
|
||||||
long channel_offset;
|
long channel_offset;
|
||||||
int timer_bit;
|
int timer_bit;
|
||||||
char *clk;
|
|
||||||
unsigned long clockevent_rating;
|
unsigned long clockevent_rating;
|
||||||
unsigned long clocksource_rating;
|
unsigned long clocksource_rating;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue