Merge branches 'next/cleanup' and 'next/fixes-non-critical' into next/cleanups-fixes
This is a merge of the cleanup and fixes-non-critical branches for the 4.7 merge window. It seems more appropriate to send a single pull request for these than two separate ones, as both branches really contain both fixes and cleanups. * next/cleanup: ARM: debug: remove extraneous DEBUG_HI3716_UART option ARM: davinci: use IRQCHIP_DECLARE for cp_intc ARM: davinci: remove unused DA8XX_NUM_UARTS ARM: davinci: simplify call to of populate ARM: DaVinci USB: removed deprecated properties from MUSB config ARM: rockchip: Fix use of plain integer as NULL pointer ARM: realview: hide unused 'pmu_device' object soc: versatile: dynamically detect RealView HBI numbers * next/fixes-non-critical: ARM: dts: exynos: Add interrupt line to MAX8997 PMIC on exynos4210-trats ARM: dts: exynos: Fix regulator name to avoid forbidden character on exynos4210-trats ARM: dts: exynos: Add MFC memory banks for Peach boards ARM: OMAP2+: n900 needs MMC slot names for legacy user space ARM: OMAP2+: Add more functions to pwm pdata for ir-rx51 ARM: EXYNOS: Properly skip unitialized parent clock in power domain on ARM: OMAP2+: Simplify auxdata by using the generic match of/platform: Allow secondary compatible match in of_dev_lookup
This commit is contained in:
commit
2e629ebc24
|
@ -298,6 +298,8 @@
|
|||
compatible = "maxim,max8997-pmic";
|
||||
|
||||
reg = <0x66>;
|
||||
interrupt-parent = <&gpx0>;
|
||||
interrupts = <7 0>;
|
||||
|
||||
max8997,pmic-buck1-uses-gpio-dvs;
|
||||
max8997,pmic-buck2-uses-gpio-dvs;
|
||||
|
@ -359,7 +361,7 @@
|
|||
};
|
||||
|
||||
vusbdac_reg: LDO8 {
|
||||
regulator-name = "VUSB/VDAC_3.3V_C210";
|
||||
regulator-name = "VUSB+VDAC_3.3V_C210";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
|
|
@ -696,6 +696,11 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&mfc {
|
||||
samsung,mfc-r = <0x43000000 0x800000>;
|
||||
samsung,mfc-l = <0x51000000 0x800000>;
|
||||
};
|
||||
|
||||
&mmc_0 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
|
|
|
@ -671,6 +671,11 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&mfc {
|
||||
samsung,mfc-r = <0x43000000 0x800000>;
|
||||
samsung,mfc-l = <0x51000000 0x800000>;
|
||||
};
|
||||
|
||||
&mmc_0 {
|
||||
status = "okay";
|
||||
num-slots = <1>;
|
||||
|
|
|
@ -92,7 +92,7 @@ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
|
|||
if (IS_ERR(pd->clk[i]))
|
||||
break;
|
||||
|
||||
if (IS_ERR(pd->clk[i]))
|
||||
if (IS_ERR(pd->pclk[i]))
|
||||
continue; /* Skip on first power up */
|
||||
if (clk_set_parent(pd->clk[i], pd->pclk[i]))
|
||||
pr_err("%s: error setting parent to clock%d\n",
|
||||
|
|
|
@ -30,6 +30,8 @@
|
|||
#include <linux/platform_data/spi-omap2-mcspi.h>
|
||||
#include <linux/platform_data/mtd-onenand-omap2.h>
|
||||
|
||||
#include <plat/dmtimer.h>
|
||||
|
||||
#include <asm/system_info.h>
|
||||
|
||||
#include "common.h"
|
||||
|
@ -47,9 +49,8 @@
|
|||
|
||||
#include <video/omap-panel-data.h>
|
||||
|
||||
#if defined(CONFIG_IR_RX51) || defined(CONFIG_IR_RX51_MODULE)
|
||||
#include <linux/platform_data/pwm_omap_dmtimer.h>
|
||||
#include <linux/platform_data/media/ir-rx51.h>
|
||||
#endif
|
||||
|
||||
#include "mux.h"
|
||||
#include "omap-pm.h"
|
||||
|
@ -1212,10 +1213,40 @@ static void __init rx51_init_tsc2005(void)
|
|||
gpio_to_irq(RX51_TSC2005_IRQ_GPIO);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||
static struct pwm_omap_dmtimer_pdata __maybe_unused pwm_dmtimer_pdata = {
|
||||
.request_by_node = omap_dm_timer_request_by_node,
|
||||
.request_specific = omap_dm_timer_request_specific,
|
||||
.request = omap_dm_timer_request,
|
||||
.set_source = omap_dm_timer_set_source,
|
||||
.get_irq = omap_dm_timer_get_irq,
|
||||
.set_int_enable = omap_dm_timer_set_int_enable,
|
||||
.set_int_disable = omap_dm_timer_set_int_disable,
|
||||
.free = omap_dm_timer_free,
|
||||
.enable = omap_dm_timer_enable,
|
||||
.disable = omap_dm_timer_disable,
|
||||
.get_fclk = omap_dm_timer_get_fclk,
|
||||
.start = omap_dm_timer_start,
|
||||
.stop = omap_dm_timer_stop,
|
||||
.set_load = omap_dm_timer_set_load,
|
||||
.set_match = omap_dm_timer_set_match,
|
||||
.set_pwm = omap_dm_timer_set_pwm,
|
||||
.set_prescaler = omap_dm_timer_set_prescaler,
|
||||
.read_counter = omap_dm_timer_read_counter,
|
||||
.write_counter = omap_dm_timer_write_counter,
|
||||
.read_status = omap_dm_timer_read_status,
|
||||
.write_status = omap_dm_timer_write_status,
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_IR_RX51) || defined(CONFIG_IR_RX51_MODULE)
|
||||
static struct lirc_rx51_platform_data rx51_lirc_data = {
|
||||
.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
|
||||
.pwm_timer = 9, /* Use GPT 9 for CIR */
|
||||
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||
.dmtimer = &pwm_dmtimer_pdata,
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
static struct platform_device rx51_lirc_device = {
|
||||
|
|
|
@ -21,9 +21,11 @@
|
|||
#include <linux/regulator/fixed.h>
|
||||
|
||||
#include <linux/platform_data/pinctrl-single.h>
|
||||
#include <linux/platform_data/hsmmc-omap.h>
|
||||
#include <linux/platform_data/iommu-omap.h>
|
||||
#include <linux/platform_data/wkup_m3.h>
|
||||
#include <linux/platform_data/pwm_omap_dmtimer.h>
|
||||
#include <linux/platform_data/media/ir-rx51.h>
|
||||
#include <plat/dmtimer.h>
|
||||
|
||||
#include "common.h"
|
||||
|
@ -31,10 +33,13 @@
|
|||
#include "dss-common.h"
|
||||
#include "control.h"
|
||||
#include "omap_device.h"
|
||||
#include "omap-pm.h"
|
||||
#include "omap-secure.h"
|
||||
#include "soc.h"
|
||||
#include "hsmmc.h"
|
||||
|
||||
static struct omap_hsmmc_platform_data __maybe_unused mmc_pdata[2];
|
||||
|
||||
struct pdata_init {
|
||||
const char *compatible;
|
||||
void (*fn)(void);
|
||||
|
@ -268,9 +273,13 @@ static struct platform_device omap3_rom_rng_device = {
|
|||
},
|
||||
};
|
||||
|
||||
static struct platform_device rx51_lirc_device;
|
||||
|
||||
static void __init nokia_n900_legacy_init(void)
|
||||
{
|
||||
hsmmc2_internal_input_clk();
|
||||
mmc_pdata[0].name = "external";
|
||||
mmc_pdata[1].name = "internal";
|
||||
|
||||
if (omap_type() == OMAP2_DEVICE_TYPE_SEC) {
|
||||
if (IS_ENABLED(CONFIG_ARM_ERRATA_430973)) {
|
||||
|
@ -286,6 +295,8 @@ static void __init nokia_n900_legacy_init(void)
|
|||
platform_device_register(&omap3_rom_rng_device);
|
||||
|
||||
}
|
||||
|
||||
platform_device_register(&rx51_lirc_device);
|
||||
}
|
||||
|
||||
static void __init omap3_tao3530_legacy_init(void)
|
||||
|
@ -453,8 +464,14 @@ void omap_auxdata_legacy_init(struct device *dev)
|
|||
|
||||
/* Dual mode timer PWM callbacks platdata */
|
||||
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||
struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
|
||||
static struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
|
||||
.request_by_node = omap_dm_timer_request_by_node,
|
||||
.request_specific = omap_dm_timer_request_specific,
|
||||
.request = omap_dm_timer_request,
|
||||
.set_source = omap_dm_timer_set_source,
|
||||
.get_irq = omap_dm_timer_get_irq,
|
||||
.set_int_enable = omap_dm_timer_set_int_enable,
|
||||
.set_int_disable = omap_dm_timer_set_int_disable,
|
||||
.free = omap_dm_timer_free,
|
||||
.enable = omap_dm_timer_enable,
|
||||
.disable = omap_dm_timer_disable,
|
||||
|
@ -465,10 +482,29 @@ struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
|
|||
.set_match = omap_dm_timer_set_match,
|
||||
.set_pwm = omap_dm_timer_set_pwm,
|
||||
.set_prescaler = omap_dm_timer_set_prescaler,
|
||||
.read_counter = omap_dm_timer_read_counter,
|
||||
.write_counter = omap_dm_timer_write_counter,
|
||||
.read_status = omap_dm_timer_read_status,
|
||||
.write_status = omap_dm_timer_write_status,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct lirc_rx51_platform_data __maybe_unused rx51_lirc_data = {
|
||||
.set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
|
||||
.pwm_timer = 9, /* Use GPT 9 for CIR */
|
||||
#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
|
||||
.dmtimer = &pwm_dmtimer_pdata,
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct platform_device __maybe_unused rx51_lirc_device = {
|
||||
.name = "lirc_rx51",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &rx51_lirc_data,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* Few boards still need auxdata populated before we populate
|
||||
* the dev entries in of_platform_populate().
|
||||
|
@ -492,11 +528,10 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
|||
OF_DEV_AUXDATA("tlv320aic3x", 0x18, "2-0018", &n810_aic33_data),
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_OMAP3
|
||||
OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap3-padconf", 0x480025a0, "480025a0.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap2-iommu", 0x5d000000, "5d000000.mmu",
|
||||
&omap3_iommu_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
|
||||
OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
|
||||
/* Only on am3517 */
|
||||
OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
|
||||
OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
|
||||
|
@ -506,19 +541,7 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
|||
OF_DEV_AUXDATA("ti,am3352-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
|
||||
&wkup_m3_data),
|
||||
#endif
|
||||
#ifdef CONFIG_ARCH_OMAP4
|
||||
OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata),
|
||||
#endif
|
||||
#ifdef CONFIG_SOC_OMAP5
|
||||
OF_DEV_AUXDATA("ti,omap5-padconf", 0x4a002840, "4a002840.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,omap5-padconf", 0x4ae0c840, "4ae0c840.pinmux", &pcs_pdata),
|
||||
#endif
|
||||
#ifdef CONFIG_SOC_DRA7XX
|
||||
OF_DEV_AUXDATA("ti,dra7-padconf", 0x4a003400, "4a003400.pinmux", &pcs_pdata),
|
||||
#endif
|
||||
#ifdef CONFIG_SOC_AM43XX
|
||||
OF_DEV_AUXDATA("ti,am437-padconf", 0x44e10800, "44e10800.pinmux", &pcs_pdata),
|
||||
OF_DEV_AUXDATA("ti,am4372-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
|
||||
&wkup_m3_data),
|
||||
#endif
|
||||
|
@ -531,6 +554,8 @@ static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
|
|||
OF_DEV_AUXDATA("ti,omap4-iommu", 0x55082000, "55082000.mmu",
|
||||
&omap4_iommu_pdata),
|
||||
#endif
|
||||
/* Common auxdata */
|
||||
OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata),
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
|
|
|
@ -297,19 +297,37 @@ static struct amba_device *of_amba_device_create(struct device_node *node,
|
|||
static const struct of_dev_auxdata *of_dev_lookup(const struct of_dev_auxdata *lookup,
|
||||
struct device_node *np)
|
||||
{
|
||||
const struct of_dev_auxdata *auxdata;
|
||||
struct resource res;
|
||||
int compatible = 0;
|
||||
|
||||
if (!lookup)
|
||||
return NULL;
|
||||
|
||||
for(; lookup->compatible != NULL; lookup++) {
|
||||
if (!of_device_is_compatible(np, lookup->compatible))
|
||||
auxdata = lookup;
|
||||
for (; auxdata->compatible; auxdata++) {
|
||||
if (!of_device_is_compatible(np, auxdata->compatible))
|
||||
continue;
|
||||
compatible++;
|
||||
if (!of_address_to_resource(np, 0, &res))
|
||||
if (res.start != lookup->phys_addr)
|
||||
if (res.start != auxdata->phys_addr)
|
||||
continue;
|
||||
pr_debug("%s: devname=%s\n", np->full_name, lookup->name);
|
||||
return lookup;
|
||||
pr_debug("%s: devname=%s\n", np->full_name, auxdata->name);
|
||||
return auxdata;
|
||||
}
|
||||
|
||||
if (!compatible)
|
||||
return NULL;
|
||||
|
||||
/* Try compatible match if no phys_addr and name are specified */
|
||||
auxdata = lookup;
|
||||
for (; auxdata->compatible; auxdata++) {
|
||||
if (!of_device_is_compatible(np, auxdata->compatible))
|
||||
continue;
|
||||
if (!auxdata->phys_addr && !auxdata->name) {
|
||||
pr_debug("%s: compatible match\n", np->full_name);
|
||||
return auxdata;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
|
|
|
@ -5,6 +5,7 @@ struct lirc_rx51_platform_data {
|
|||
int pwm_timer;
|
||||
|
||||
int(*set_max_mpu_wakeup_lat)(struct device *dev, long t);
|
||||
struct pwm_omap_dmtimer_pdata *dmtimer;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,6 +35,16 @@
|
|||
#ifndef __PWM_OMAP_DMTIMER_PDATA_H
|
||||
#define __PWM_OMAP_DMTIMER_PDATA_H
|
||||
|
||||
/* clock sources */
|
||||
#define PWM_OMAP_DMTIMER_SRC_SYS_CLK 0x00
|
||||
#define PWM_OMAP_DMTIMER_SRC_32_KHZ 0x01
|
||||
#define PWM_OMAP_DMTIMER_SRC_EXT_CLK 0x02
|
||||
|
||||
/* timer interrupt enable bits */
|
||||
#define PWM_OMAP_DMTIMER_INT_CAPTURE (1 << 2)
|
||||
#define PWM_OMAP_DMTIMER_INT_OVERFLOW (1 << 1)
|
||||
#define PWM_OMAP_DMTIMER_INT_MATCH (1 << 0)
|
||||
|
||||
/* trigger types */
|
||||
#define PWM_OMAP_DMTIMER_TRIGGER_NONE 0x00
|
||||
#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW 0x01
|
||||
|
@ -45,15 +55,23 @@ typedef struct omap_dm_timer pwm_omap_dmtimer;
|
|||
|
||||
struct pwm_omap_dmtimer_pdata {
|
||||
pwm_omap_dmtimer *(*request_by_node)(struct device_node *np);
|
||||
pwm_omap_dmtimer *(*request_specific)(int timer_id);
|
||||
pwm_omap_dmtimer *(*request)(void);
|
||||
|
||||
int (*free)(pwm_omap_dmtimer *timer);
|
||||
|
||||
void (*enable)(pwm_omap_dmtimer *timer);
|
||||
void (*disable)(pwm_omap_dmtimer *timer);
|
||||
|
||||
int (*get_irq)(pwm_omap_dmtimer *timer);
|
||||
int (*set_int_enable)(pwm_omap_dmtimer *timer, unsigned int value);
|
||||
int (*set_int_disable)(pwm_omap_dmtimer *timer, u32 mask);
|
||||
|
||||
struct clk *(*get_fclk)(pwm_omap_dmtimer *timer);
|
||||
|
||||
int (*start)(pwm_omap_dmtimer *timer);
|
||||
int (*stop)(pwm_omap_dmtimer *timer);
|
||||
int (*set_source)(pwm_omap_dmtimer *timer, int source);
|
||||
|
||||
int (*set_load)(pwm_omap_dmtimer *timer, int autoreload,
|
||||
unsigned int value);
|
||||
|
@ -63,7 +81,10 @@ struct pwm_omap_dmtimer_pdata {
|
|||
int toggle, int trigger);
|
||||
int (*set_prescaler)(pwm_omap_dmtimer *timer, int prescaler);
|
||||
|
||||
unsigned int (*read_counter)(pwm_omap_dmtimer *timer);
|
||||
int (*write_counter)(pwm_omap_dmtimer *timer, unsigned int value);
|
||||
unsigned int (*read_status)(pwm_omap_dmtimer *timer);
|
||||
int (*write_status)(pwm_omap_dmtimer *timer, unsigned int value);
|
||||
};
|
||||
|
||||
#endif /* __PWM_OMAP_DMTIMER_PDATA_H */
|
||||
|
|
Loading…
Reference in New Issue