Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into fixes
This commit is contained in:
commit
e04d6c53a5
5 changed files with 24 additions and 5 deletions
|
@ -257,11 +257,16 @@ static const struct fsl_usb2_platform_data otg_device_pdata __initconst = {
|
||||||
.workaround = FLS_USB2_WORKAROUND_ENGCM09152,
|
.workaround = FLS_USB2_WORKAROUND_ENGCM09152,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int vpr200_usbh_init(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
return mx35_initialize_usb_hw(pdev->id,
|
||||||
|
MXC_EHCI_INTERFACE_SINGLE_UNI | MXC_EHCI_INTERNAL_PHY);
|
||||||
|
}
|
||||||
|
|
||||||
/* USB HOST config */
|
/* USB HOST config */
|
||||||
static const struct mxc_usbh_platform_data usb_host_pdata __initconst = {
|
static const struct mxc_usbh_platform_data usb_host_pdata __initconst = {
|
||||||
.portsc = MXC_EHCI_MODE_SERIAL,
|
.init = vpr200_usbh_init,
|
||||||
.flags = MXC_EHCI_INTERFACE_SINGLE_UNI |
|
.portsc = MXC_EHCI_MODE_SERIAL,
|
||||||
MXC_EHCI_INTERNAL_PHY,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device *devices[] __initdata = {
|
static struct platform_device *devices[] __initdata = {
|
||||||
|
|
|
@ -193,7 +193,7 @@ static iomux_v3_cfg_t mx53_loco_pads[] = {
|
||||||
.wakeup = wake, \
|
.wakeup = wake, \
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct gpio_keys_button loco_buttons[] __initconst = {
|
static struct gpio_keys_button loco_buttons[] = {
|
||||||
GPIO_BUTTON(MX53_LOCO_POWER, KEY_POWER, 1, "power", 0),
|
GPIO_BUTTON(MX53_LOCO_POWER, KEY_POWER, 1, "power", 0),
|
||||||
GPIO_BUTTON(MX53_LOCO_UI1, KEY_VOLUMEUP, 1, "volume-up", 0),
|
GPIO_BUTTON(MX53_LOCO_UI1, KEY_VOLUMEUP, 1, "volume-up", 0),
|
||||||
GPIO_BUTTON(MX53_LOCO_UI2, KEY_VOLUMEDOWN, 1, "volume-down", 0),
|
GPIO_BUTTON(MX53_LOCO_UI2, KEY_VOLUMEDOWN, 1, "volume-down", 0),
|
||||||
|
|
|
@ -295,11 +295,11 @@ static int name##_set_rate(struct clk *clk, unsigned long rate) \
|
||||||
unsigned long diff, parent_rate, calc_rate; \
|
unsigned long diff, parent_rate, calc_rate; \
|
||||||
int i; \
|
int i; \
|
||||||
\
|
\
|
||||||
parent_rate = clk_get_rate(clk->parent); \
|
|
||||||
div_max = BM_CLKCTRL_##dr##_DIV >> BP_CLKCTRL_##dr##_DIV; \
|
div_max = BM_CLKCTRL_##dr##_DIV >> BP_CLKCTRL_##dr##_DIV; \
|
||||||
bm_busy = BM_CLKCTRL_##dr##_BUSY; \
|
bm_busy = BM_CLKCTRL_##dr##_BUSY; \
|
||||||
\
|
\
|
||||||
if (clk->parent == &ref_xtal_clk) { \
|
if (clk->parent == &ref_xtal_clk) { \
|
||||||
|
parent_rate = clk_get_rate(clk->parent); \
|
||||||
div = DIV_ROUND_UP(parent_rate, rate); \
|
div = DIV_ROUND_UP(parent_rate, rate); \
|
||||||
if (clk == &cpu_clk) { \
|
if (clk == &cpu_clk) { \
|
||||||
div_max = BM_CLKCTRL_CPU_DIV_XTAL >> \
|
div_max = BM_CLKCTRL_CPU_DIV_XTAL >> \
|
||||||
|
@ -309,6 +309,11 @@ static int name##_set_rate(struct clk *clk, unsigned long rate) \
|
||||||
if (div == 0 || div > div_max) \
|
if (div == 0 || div > div_max) \
|
||||||
return -EINVAL; \
|
return -EINVAL; \
|
||||||
} else { \
|
} else { \
|
||||||
|
/* \
|
||||||
|
* hack alert: this block modifies clk->parent, too, \
|
||||||
|
* so the base to use it the grand parent. \
|
||||||
|
*/ \
|
||||||
|
parent_rate = clk_get_rate(clk->parent->parent); \
|
||||||
rate >>= PARENT_RATE_SHIFT; \
|
rate >>= PARENT_RATE_SHIFT; \
|
||||||
parent_rate >>= PARENT_RATE_SHIFT; \
|
parent_rate >>= PARENT_RATE_SHIFT; \
|
||||||
diff = parent_rate; \
|
diff = parent_rate; \
|
||||||
|
|
|
@ -295,6 +295,12 @@ static int mxc_gpio_direction_output(struct gpio_chip *chip,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This lock class tells lockdep that GPIO irqs are in a different
|
||||||
|
* category than their parents, so it won't report false recursion.
|
||||||
|
*/
|
||||||
|
static struct lock_class_key gpio_lock_class;
|
||||||
|
|
||||||
int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt)
|
int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt)
|
||||||
{
|
{
|
||||||
int i, j;
|
int i, j;
|
||||||
|
@ -311,6 +317,7 @@ int __init mxc_gpio_init(struct mxc_gpio_port *port, int cnt)
|
||||||
__raw_writel(~0, port[i].base + GPIO_ISR);
|
__raw_writel(~0, port[i].base + GPIO_ISR);
|
||||||
for (j = port[i].virtual_irq_start;
|
for (j = port[i].virtual_irq_start;
|
||||||
j < port[i].virtual_irq_start + 32; j++) {
|
j < port[i].virtual_irq_start + 32; j++) {
|
||||||
|
irq_set_lockdep_class(j, &gpio_lock_class);
|
||||||
irq_set_chip_and_handler(j, &gpio_irq_chip,
|
irq_set_chip_and_handler(j, &gpio_irq_chip,
|
||||||
handle_level_irq);
|
handle_level_irq);
|
||||||
set_irq_flags(j, IRQF_VALID);
|
set_irq_flags(j, IRQF_VALID);
|
||||||
|
|
|
@ -124,6 +124,8 @@ imx_ssi_fiq_start:
|
||||||
1:
|
1:
|
||||||
@ return from FIQ
|
@ return from FIQ
|
||||||
subs pc, lr, #4
|
subs pc, lr, #4
|
||||||
|
|
||||||
|
.align
|
||||||
imx_ssi_fiq_base:
|
imx_ssi_fiq_base:
|
||||||
.word 0x0
|
.word 0x0
|
||||||
imx_ssi_fiq_rx_buffer:
|
imx_ssi_fiq_rx_buffer:
|
||||||
|
|
Loading…
Reference in a new issue