ARM: OMAP2: Misc updates from linux-omap tree
Misc updates from linux-omap tree, mostly to update common device initialization and add missing defines from linux-omap tree. Also some changes to make room for adding 34xx in following patches. Note that the I2C resources are now set up in arch/arm/plat-omap/i2c.c helper, and can be removed from devices.c. Signed-off-by: Tony Lindgren <tony@atomide.com>
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
/* The maximum error between a target DPLL rate and the rounded rate in Hz */
|
||||
#define DEFAULT_DPLL_RATE_TOLERANCE 50000
|
||||
|
||||
int omap2_clk_init(void);
|
||||
int omap2_clk_enable(struct clk *clk);
|
||||
void omap2_clk_disable(struct clk *clk);
|
||||
long omap2_clk_round_rate(struct clk *clk, unsigned long rate);
|
||||
|
@@ -23,50 +23,7 @@
|
||||
#include <mach/board.h>
|
||||
#include <mach/mux.h>
|
||||
#include <mach/gpio.h>
|
||||
|
||||
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
||||
|
||||
#define OMAP2_I2C_BASE2 0x48072000
|
||||
#define OMAP2_I2C_INT2 57
|
||||
|
||||
static struct resource i2c_resources2[] = {
|
||||
{
|
||||
.start = OMAP2_I2C_BASE2,
|
||||
.end = OMAP2_I2C_BASE2 + 0x3f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = OMAP2_I2C_INT2,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device omap_i2c_device2 = {
|
||||
.name = "i2c_omap",
|
||||
.id = 2,
|
||||
.num_resources = ARRAY_SIZE(i2c_resources2),
|
||||
.resource = i2c_resources2,
|
||||
};
|
||||
|
||||
/* See also arch/arm/plat-omap/devices.c for first I2C on 24xx */
|
||||
static void omap_init_i2c(void)
|
||||
{
|
||||
/* REVISIT: Second I2C not in use on H4? */
|
||||
if (machine_is_omap_h4())
|
||||
return;
|
||||
|
||||
if (!cpu_is_omap2430()) {
|
||||
omap_cfg_reg(J15_24XX_I2C2_SCL);
|
||||
omap_cfg_reg(H19_24XX_I2C2_SDA);
|
||||
}
|
||||
(void) platform_device_register(&omap_i2c_device2);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static void omap_init_i2c(void) {}
|
||||
|
||||
#endif
|
||||
#include <mach/eac.h>
|
||||
|
||||
#if defined(CONFIG_OMAP_DSP) || defined(CONFIG_OMAP_DSP_MODULE)
|
||||
#define OMAP2_MBOX_BASE IO_ADDRESS(OMAP24XX_MAILBOX_BASE)
|
||||
@@ -104,7 +61,9 @@ static inline void omap_init_mbox(void) { }
|
||||
|
||||
#if defined(CONFIG_OMAP_STI)
|
||||
|
||||
#define OMAP2_STI_BASE IO_ADDRESS(0x48068000)
|
||||
#if defined(CONFIG_ARCH_OMAP2)
|
||||
|
||||
#define OMAP2_STI_BASE 0x48068000
|
||||
#define OMAP2_STI_CHANNEL_BASE 0x54000000
|
||||
#define OMAP2_STI_IRQ 4
|
||||
|
||||
@@ -124,6 +83,25 @@ static struct resource sti_resources[] = {
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
#elif defined(CONFIG_ARCH_OMAP3)
|
||||
|
||||
#define OMAP3_SDTI_BASE 0x54500000
|
||||
#define OMAP3_SDTI_CHANNEL_BASE 0x54600000
|
||||
|
||||
static struct resource sti_resources[] = {
|
||||
{
|
||||
.start = OMAP3_SDTI_BASE,
|
||||
.end = OMAP3_SDTI_BASE + 0xFFF,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = OMAP3_SDTI_CHANNEL_BASE,
|
||||
.end = OMAP3_SDTI_CHANNEL_BASE + SZ_1M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static struct platform_device sti_device = {
|
||||
.name = "sti",
|
||||
@@ -140,12 +118,14 @@ static inline void omap_init_sti(void)
|
||||
static inline void omap_init_sti(void) {}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPI_OMAP24XX)
|
||||
#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
|
||||
|
||||
#include <mach/mcspi.h>
|
||||
|
||||
#define OMAP2_MCSPI1_BASE 0x48098000
|
||||
#define OMAP2_MCSPI2_BASE 0x4809a000
|
||||
#define OMAP2_MCSPI3_BASE 0x480b8000
|
||||
#define OMAP2_MCSPI4_BASE 0x480ba000
|
||||
|
||||
static struct omap2_mcspi_platform_config omap2_mcspi1_config = {
|
||||
.num_cs = 4,
|
||||
@@ -159,7 +139,7 @@ static struct resource omap2_mcspi1_resources[] = {
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device omap2_mcspi1 = {
|
||||
static struct platform_device omap2_mcspi1 = {
|
||||
.name = "omap2_mcspi",
|
||||
.id = 1,
|
||||
.num_resources = ARRAY_SIZE(omap2_mcspi1_resources),
|
||||
@@ -181,7 +161,7 @@ static struct resource omap2_mcspi2_resources[] = {
|
||||
},
|
||||
};
|
||||
|
||||
struct platform_device omap2_mcspi2 = {
|
||||
static struct platform_device omap2_mcspi2 = {
|
||||
.name = "omap2_mcspi",
|
||||
.id = 2,
|
||||
.num_resources = ARRAY_SIZE(omap2_mcspi2_resources),
|
||||
@@ -191,16 +171,162 @@ struct platform_device omap2_mcspi2 = {
|
||||
},
|
||||
};
|
||||
|
||||
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3)
|
||||
static struct omap2_mcspi_platform_config omap2_mcspi3_config = {
|
||||
.num_cs = 2,
|
||||
};
|
||||
|
||||
static struct resource omap2_mcspi3_resources[] = {
|
||||
{
|
||||
.start = OMAP2_MCSPI3_BASE,
|
||||
.end = OMAP2_MCSPI3_BASE + 0xff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device omap2_mcspi3 = {
|
||||
.name = "omap2_mcspi",
|
||||
.id = 3,
|
||||
.num_resources = ARRAY_SIZE(omap2_mcspi3_resources),
|
||||
.resource = omap2_mcspi3_resources,
|
||||
.dev = {
|
||||
.platform_data = &omap2_mcspi3_config,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
static struct omap2_mcspi_platform_config omap2_mcspi4_config = {
|
||||
.num_cs = 1,
|
||||
};
|
||||
|
||||
static struct resource omap2_mcspi4_resources[] = {
|
||||
{
|
||||
.start = OMAP2_MCSPI4_BASE,
|
||||
.end = OMAP2_MCSPI4_BASE + 0xff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device omap2_mcspi4 = {
|
||||
.name = "omap2_mcspi",
|
||||
.id = 4,
|
||||
.num_resources = ARRAY_SIZE(omap2_mcspi4_resources),
|
||||
.resource = omap2_mcspi4_resources,
|
||||
.dev = {
|
||||
.platform_data = &omap2_mcspi4_config,
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
static void omap_init_mcspi(void)
|
||||
{
|
||||
platform_device_register(&omap2_mcspi1);
|
||||
platform_device_register(&omap2_mcspi2);
|
||||
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3)
|
||||
platform_device_register(&omap2_mcspi3);
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
platform_device_register(&omap2_mcspi4);
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
static inline void omap_init_mcspi(void) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SND_OMAP24XX_EAC
|
||||
|
||||
#define OMAP2_EAC_BASE 0x48090000
|
||||
|
||||
static struct resource omap2_eac_resources[] = {
|
||||
{
|
||||
.start = OMAP2_EAC_BASE,
|
||||
.end = OMAP2_EAC_BASE + 0x109,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device omap2_eac_device = {
|
||||
.name = "omap24xx-eac",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(omap2_eac_resources),
|
||||
.resource = omap2_eac_resources,
|
||||
.dev = {
|
||||
.platform_data = NULL,
|
||||
},
|
||||
};
|
||||
|
||||
void omap_init_eac(struct eac_platform_data *pdata)
|
||||
{
|
||||
omap2_eac_device.dev.platform_data = pdata;
|
||||
platform_device_register(&omap2_eac_device);
|
||||
}
|
||||
|
||||
#else
|
||||
void omap_init_eac(struct eac_platform_data *pdata) {}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_OMAP_SHA1_MD5
|
||||
static struct resource sha1_md5_resources[] = {
|
||||
{
|
||||
.start = OMAP24XX_SEC_SHA1MD5_BASE,
|
||||
.end = OMAP24XX_SEC_SHA1MD5_BASE + 0x64,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = INT_24XX_SHA1MD5,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device sha1_md5_device = {
|
||||
.name = "OMAP SHA1/MD5",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(sha1_md5_resources),
|
||||
.resource = sha1_md5_resources,
|
||||
};
|
||||
|
||||
static void omap_init_sha1_md5(void)
|
||||
{
|
||||
platform_device_register(&sha1_md5_device);
|
||||
}
|
||||
#else
|
||||
static inline void omap_init_sha1_md5(void) { }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE)
|
||||
#if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
|
||||
#define OMAP_HDQ_BASE 0x480B2000
|
||||
#endif
|
||||
static struct resource omap_hdq_resources[] = {
|
||||
{
|
||||
.start = OMAP_HDQ_BASE,
|
||||
.end = OMAP_HDQ_BASE + 0x1C,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = INT_24XX_HDQ_IRQ,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
static struct platform_device omap_hdq_dev = {
|
||||
.name = "omap_hdq",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = NULL,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(omap_hdq_resources),
|
||||
.resource = omap_hdq_resources,
|
||||
};
|
||||
static inline void omap_hdq_init(void)
|
||||
{
|
||||
(void) platform_device_register(&omap_hdq_dev);
|
||||
}
|
||||
#else
|
||||
static inline void omap_hdq_init(void) {}
|
||||
#endif
|
||||
|
||||
/*-------------------------------------------------------------------------*/
|
||||
|
||||
static int __init omap2_init_devices(void)
|
||||
@@ -208,10 +334,11 @@ static int __init omap2_init_devices(void)
|
||||
/* please keep these calls, and their implementations above,
|
||||
* in alphabetical order so they're easier to sort through.
|
||||
*/
|
||||
omap_init_i2c();
|
||||
omap_init_mbox();
|
||||
omap_init_mcspi();
|
||||
omap_hdq_init();
|
||||
omap_init_sti();
|
||||
omap_init_sha1_md5();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include <asm/mach-types.h>
|
||||
#include <mach/gpmc.h>
|
||||
|
||||
#include "memory.h"
|
||||
#include <mach/sdrc.h>
|
||||
|
||||
/* GPMC register offsets */
|
||||
#define GPMC_REVISION 0x00
|
||||
|
@@ -4,8 +4,11 @@
|
||||
* OMAP2 I/O mapping code
|
||||
*
|
||||
* Copyright (C) 2005 Nokia Corporation
|
||||
* Author: Juha Yrj<72>l<EFBFBD> <juha.yrjola@nokia.com>
|
||||
* Updated map desc to add 2430 support : <x0khasim@ti.com>
|
||||
* Copyright (C) 2007 Texas Instruments
|
||||
*
|
||||
* Author:
|
||||
* Juha Yrjola <juha.yrjola@nokia.com>
|
||||
* Syed Khasim <x0khasim@ti.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
@@ -23,6 +26,11 @@
|
||||
|
||||
#include <mach/mux.h>
|
||||
#include <mach/omapfb.h>
|
||||
#include <mach/sram.h>
|
||||
|
||||
#include "memory.h"
|
||||
|
||||
#include "clock.h"
|
||||
|
||||
#include <mach/powerdomain.h>
|
||||
|
||||
@@ -31,13 +39,6 @@
|
||||
#include <mach/clockdomain.h>
|
||||
#include "clockdomains.h"
|
||||
|
||||
extern void omap_sram_init(void);
|
||||
extern int omap2_clk_init(void);
|
||||
extern void omap2_check_revision(void);
|
||||
extern void omap2_init_memory(void);
|
||||
extern void gpmc_init(void);
|
||||
extern void omapfb_reserve_sdram(void);
|
||||
|
||||
/*
|
||||
* The machine specific code may provide the extra mapping besides the
|
||||
* default mapping provided here.
|
||||
|
@@ -37,11 +37,9 @@ static struct omap_irq_bank {
|
||||
} __attribute__ ((aligned(4))) irq_banks[] = {
|
||||
{
|
||||
/* MPU INTC */
|
||||
.base_reg = IO_ADDRESS(OMAP24XX_IC_BASE),
|
||||
.base_reg = 0,
|
||||
.nr_irqs = 96,
|
||||
}, {
|
||||
/* XXX: DSP INTC */
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
/* XXX: FIQ and additional INTC support (only MPU at the moment) */
|
||||
@@ -118,10 +116,8 @@ void __init omap_init_irq(void)
|
||||
for (i = 0; i < ARRAY_SIZE(irq_banks); i++) {
|
||||
struct omap_irq_bank *bank = irq_banks + i;
|
||||
|
||||
/* XXX */
|
||||
if (!bank->base_reg)
|
||||
continue;
|
||||
|
||||
if (cpu_is_omap24xx())
|
||||
bank->base_reg = IO_ADDRESS(OMAP24XX_IC_BASE);
|
||||
omap_irq_bank_init_one(bank);
|
||||
|
||||
nr_irqs += bank->nr_irqs;
|
||||
|
@@ -14,6 +14,9 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef ARCH_ARM_MACH_OMAP2_MEMORY_H
|
||||
#define ARCH_ARM_MACH_OMAP2_MEMORY_H
|
||||
|
||||
/* Memory timings */
|
||||
#define M_DDR 1
|
||||
#define M_LOCK_CTRL (1 << 2)
|
||||
@@ -34,3 +37,7 @@ extern u32 omap2_memory_get_fast_dll_ctrl(void);
|
||||
extern u32 omap2_memory_get_type(void);
|
||||
u32 omap2_dll_force_needed(void);
|
||||
u32 omap2_reprogram_sdrc(u32 level, u32 force);
|
||||
void __init omap2_init_memory(void);
|
||||
void __init gpmc_init(void);
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user