Fixes for omaps for v4.3-rc cycle:
- Two more patches to fix most of the MMC regressions with the PBIAS regulator changes. At least two MMC driver related issues still seems to remain for omap3 legacy booting and omap4 duovero. Note that the dts changes depend on a recent regulator fix, and are based on the regulator commit now in mainline kernel - Enable autoidle for am43xx clocks to prevent clocks from staying always on - Fix i2c5 pinctrl offsets for omap5-uevm - Enable PCA953X as that's needed for HDMI to work on omap5 - Update phy supplies for beagle x15 beta board - Use palmas-usb for on beagle x15 to start using the related driver that recently got merged - -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJWBKnGAAoJEBvUPslcq6Vzps4QAIJGO+P3Fivcaso+1Spw41ib tTQUgF5dGX1It7HageKyd8mk9d5ywlZ3iFCJKuxdJAZfzSzdW6QdF/XKvH5K26nO +imDQV/WdGYcgKGQWvkMGbaWIcqxkSU1Wk/VWIlibXd875vVE5Koit5yvtQZTt19 Xxk7Sj3ADCQ+WTgh+k/hFlvypjbKnWfV2HvCZ+tPPDHQA0IVejAfWn4u3jmcx6S9 VY1CnU5NzQNNLmXaYwuUSKYFnipfrljsNvZfwLvVFYOfApWOAKpWzs2GdX161TJx oZdMhSVwJ9gBGRGhv33GXNouVmq4aEesXwg8M0fd8WpWWXVDI8SkEgALU9eghgGx Z41OuJIXS9udgqQdfwK2EUrynKKhQ/R1ywAM4SHyGCbs+FO3yAE8Gxgot/cnaGGx xJkog31VkHfG2ucGjBMaMJQ9oJfCtyT9tTdpHOnaKVrnn/7ZQwDbRR/npsTaA1Vg 6EZvcYJpkmQ8Z/wYdMVvHrbzZ5GY/FRsRo8MwADmarLGRJ8aN+T3ZXik/cFmEqu+ UN2OkOWn0i/OTdw8ED7pzvTMFr/mOZW1G51cj9W/uuVrA5nEmIWxrlVYm90aiE65 Qz+f+qcTiVFFatpEq9CUhxsvOiDZ9gbBW130f/hmrkKm3PziAla3V1n+nOcO6/IF UBINOYy30yfDDccmbpnS =UnKL -----END PGP SIGNATURE----- Merge tag 'omap-for-v4.3/fixes-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes Fixes for omaps for v4.3-rc cycle: - Two more patches to fix most of the MMC regressions with the PBIAS regulator changes. At least two MMC driver related issues still seems to remain for omap3 legacy booting and omap4 duovero. Note that the dts changes depend on a recent regulator fix, and are based on the regulator commit now in mainline kernel - Enable autoidle for am43xx clocks to prevent clocks from staying always on - Fix i2c5 pinctrl offsets for omap5-uevm - Enable PCA953X as that's needed for HDMI to work on omap5 - Update phy supplies for beagle x15 beta board - Use palmas-usb for on beagle x15 to start using the related driver that recently got merged * tag 'omap-for-v4.3/fixes-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: dts: fix omap2+ address translation for pbias ARM: dts: am57xx-beagle-x15: use palmas-usb for USB2 ARM: omap2plus_defconfig: enable GPIO_PCA953X ARM: dts: omap5-uevm.dts: fix i2c5 pinctrl offsets ARM: OMAP2+: AM43XX: Enable autoidle for clks in am43xx_init_late ARM: dts: am57xx-beagle-x15: Update Phy supplies regulator: pbias: program pbias register offset in pbias driver ARM: omap2plus_defconfig: Enable MUSB DMA support ARM: DRA752: Add ID detect for ES2.0 ARM: OMAP3: vc: fix 'or' always true warning ARM: OMAP2+: Fix booting if no timer parent clock is available ARM: OMAP2+: omap-device: fix race deferred probe of omap_hsmmc vs omap_device_late_init Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
commit
b8ba826f8d
16 changed files with 119 additions and 46 deletions
|
@ -2,7 +2,12 @@ PBIAS internal regulator for SD card dual voltage i/o pads on OMAP SoCs.
|
|||
|
||||
Required properties:
|
||||
- compatible:
|
||||
- "ti,pbias-omap" for OMAP2, OMAP3, OMAP4, OMAP5, DRA7.
|
||||
- should be "ti,pbias-dra7" for DRA7
|
||||
- should be "ti,pbias-omap2" for OMAP2
|
||||
- should be "ti,pbias-omap3" for OMAP3
|
||||
- should be "ti,pbias-omap4" for OMAP4
|
||||
- should be "ti,pbias-omap5" for OMAP5
|
||||
- "ti,pbias-omap" is deprecated
|
||||
- reg: pbias register offset from syscon base and size of pbias register.
|
||||
- syscon : phandle of the system control module
|
||||
- regulator-name : should be
|
||||
|
|
|
@ -98,13 +98,6 @@
|
|||
pinctrl-0 = <&extcon_usb1_pins>;
|
||||
};
|
||||
|
||||
extcon_usb2: extcon_usb2 {
|
||||
compatible = "linux,extcon-usb-gpio";
|
||||
id-gpio = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&extcon_usb2_pins>;
|
||||
};
|
||||
|
||||
hdmi0: connector {
|
||||
compatible = "hdmi-connector";
|
||||
label = "hdmi";
|
||||
|
@ -326,12 +319,6 @@
|
|||
>;
|
||||
};
|
||||
|
||||
extcon_usb2_pins: extcon_usb2_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x3e8 (PIN_INPUT_PULLUP | MUX_MODE14) /* uart1_ctsn.gpio7_24 */
|
||||
>;
|
||||
};
|
||||
|
||||
tpd12s015_pins: pinmux_tpd12s015_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x3b0 (PIN_OUTPUT | MUX_MODE14) /* gpio7_10 CT_CP_HPD */
|
||||
|
@ -432,7 +419,7 @@
|
|||
};
|
||||
|
||||
ldo3_reg: ldo3 {
|
||||
/* VDDA_1V8_PHY */
|
||||
/* VDDA_1V8_PHYA */
|
||||
regulator-name = "ldo3";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
@ -440,6 +427,15 @@
|
|||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo4_reg: ldo4 {
|
||||
/* VDDA_1V8_PHYB */
|
||||
regulator-name = "ldo4";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
ldo9_reg: ldo9 {
|
||||
/* VDD_RTC */
|
||||
regulator-name = "ldo9";
|
||||
|
@ -495,6 +491,14 @@
|
|||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
};
|
||||
|
||||
extcon_usb2: tps659038_usb {
|
||||
compatible = "ti,palmas-usb-vid";
|
||||
ti,enable-vbus-detection;
|
||||
ti,enable-id-detection;
|
||||
id-gpios = <&gpio7 24 GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
tmp102: tmp102@48 {
|
||||
|
@ -623,6 +627,14 @@
|
|||
};
|
||||
|
||||
&usb2 {
|
||||
/*
|
||||
* Stand alone usage is peripheral only.
|
||||
* However, with some resistor modifications
|
||||
* this port can be used via expansion connectors
|
||||
* as "host" or "dual-role". If so, provide
|
||||
* the necessary dr_mode override in the expansion
|
||||
* board's DT.
|
||||
*/
|
||||
dr_mode = "peripheral";
|
||||
};
|
||||
|
||||
|
@ -681,7 +693,7 @@
|
|||
|
||||
&hdmi {
|
||||
status = "ok";
|
||||
vdda-supply = <&ldo3_reg>;
|
||||
vdda-supply = <&ldo4_reg>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&hdmi_pins>;
|
||||
|
|
|
@ -120,6 +120,7 @@
|
|||
reg = <0x0 0x1400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x0 0x1400>;
|
||||
|
||||
pbias_regulator: pbias_regulator {
|
||||
compatible = "ti,pbias-dra7", "ti,pbias-omap";
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
reg = <0x270 0x240>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x270 0x240>;
|
||||
|
||||
scm_clocks: clocks {
|
||||
#address-cells = <1>;
|
||||
|
|
|
@ -113,10 +113,22 @@
|
|||
};
|
||||
|
||||
scm_conf: scm_conf@270 {
|
||||
compatible = "syscon";
|
||||
compatible = "syscon", "simple-bus";
|
||||
reg = <0x270 0x330>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x270 0x330>;
|
||||
|
||||
pbias_regulator: pbias_regulator {
|
||||
compatible = "ti,pbias-omap3", "ti,pbias-omap";
|
||||
reg = <0x2b0 0x4>;
|
||||
syscon = <&scm_conf>;
|
||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||
regulator-name = "pbias_mmc_omap2430";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
scm_clocks: clocks {
|
||||
#address-cells = <1>;
|
||||
|
@ -202,17 +214,6 @@
|
|||
dma-requests = <96>;
|
||||
};
|
||||
|
||||
pbias_regulator: pbias_regulator {
|
||||
compatible = "ti,pbias-omap3", "ti,pbias-omap";
|
||||
reg = <0x2b0 0x4>;
|
||||
syscon = <&scm_conf>;
|
||||
pbias_mmc_reg: pbias_mmc_omap2430 {
|
||||
regulator-name = "pbias_mmc_omap2430";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
};
|
||||
};
|
||||
|
||||
gpio1: gpio@48310000 {
|
||||
compatible = "ti,omap3-gpio";
|
||||
reg = <0x48310000 0x200>;
|
||||
|
|
|
@ -196,6 +196,7 @@
|
|||
reg = <0x5a0 0x170>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x5a0 0x170>;
|
||||
|
||||
pbias_regulator: pbias_regulator {
|
||||
compatible = "ti,pbias-omap4", "ti,pbias-omap";
|
||||
|
|
|
@ -174,8 +174,8 @@
|
|||
|
||||
i2c5_pins: pinmux_i2c5_pins {
|
||||
pinctrl-single,pins = <
|
||||
0x184 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
||||
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
||||
0x186 (PIN_INPUT | MUX_MODE0) /* i2c5_scl */
|
||||
0x188 (PIN_INPUT | MUX_MODE0) /* i2c5_sda */
|
||||
>;
|
||||
};
|
||||
|
||||
|
|
|
@ -185,6 +185,7 @@
|
|||
reg = <0x5a0 0xec>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x5a0 0xec>;
|
||||
|
||||
pbias_regulator: pbias_regulator {
|
||||
compatible = "ti,pbias-omap5", "ti,pbias-omap";
|
||||
|
|
|
@ -240,6 +240,7 @@ CONFIG_SSI_PROTOCOL=m
|
|||
CONFIG_PINCTRL_SINGLE=y
|
||||
CONFIG_DEBUG_GPIO=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_GPIO_PCA953X=m
|
||||
CONFIG_GPIO_PCF857X=y
|
||||
CONFIG_GPIO_TWL4030=y
|
||||
CONFIG_GPIO_PALMAS=y
|
||||
|
@ -350,6 +351,8 @@ CONFIG_USB_MUSB_HDRC=m
|
|||
CONFIG_USB_MUSB_OMAP2PLUS=m
|
||||
CONFIG_USB_MUSB_AM35X=m
|
||||
CONFIG_USB_MUSB_DSPS=m
|
||||
CONFIG_USB_INVENTRA_DMA=y
|
||||
CONFIG_USB_TI_CPPI41_DMA=y
|
||||
CONFIG_USB_DWC3=m
|
||||
CONFIG_USB_TEST=m
|
||||
CONFIG_AM335X_PHY_USB=y
|
||||
|
|
|
@ -653,8 +653,12 @@ void __init dra7xxx_check_revision(void)
|
|||
omap_revision = DRA752_REV_ES1_0;
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
omap_revision = DRA752_REV_ES1_1;
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
omap_revision = DRA752_REV_ES2_0;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -674,7 +678,7 @@ void __init dra7xxx_check_revision(void)
|
|||
/* Unknown default to latest silicon rev as default*/
|
||||
pr_warn("%s: unknown idcode=0x%08x (hawkeye=0x%08x,rev=0x%x)\n",
|
||||
__func__, idcode, hawkeye, rev);
|
||||
omap_revision = DRA752_REV_ES1_1;
|
||||
omap_revision = DRA752_REV_ES2_0;
|
||||
}
|
||||
|
||||
sprintf(soc_name, "DRA%03x", omap_rev() >> 16);
|
||||
|
|
|
@ -676,6 +676,7 @@ void __init am43xx_init_early(void)
|
|||
void __init am43xx_init_late(void)
|
||||
{
|
||||
omap_common_late_init();
|
||||
omap2_clk_enable_autoidle_all();
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -901,7 +901,8 @@ static int __init omap_device_late_idle(struct device *dev, void *data)
|
|||
if (od->hwmods[i]->flags & HWMOD_INIT_NO_IDLE)
|
||||
return 0;
|
||||
|
||||
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER) {
|
||||
if (od->_driver_status != BUS_NOTIFY_BOUND_DRIVER &&
|
||||
od->_driver_status != BUS_NOTIFY_BIND_DRIVER) {
|
||||
if (od->_state == OMAP_DEVICE_STATE_ENABLED) {
|
||||
dev_warn(dev, "%s: enabled but no driver. Idling\n",
|
||||
__func__);
|
||||
|
|
|
@ -469,6 +469,8 @@ IS_OMAP_TYPE(3430, 0x3430)
|
|||
#define DRA7XX_CLASS 0x07000000
|
||||
#define DRA752_REV_ES1_0 (DRA7XX_CLASS | (0x52 << 16) | (0x10 << 8))
|
||||
#define DRA752_REV_ES1_1 (DRA7XX_CLASS | (0x52 << 16) | (0x11 << 8))
|
||||
#define DRA752_REV_ES2_0 (DRA7XX_CLASS | (0x52 << 16) | (0x20 << 8))
|
||||
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||
#define DRA722_REV_ES1_0 (DRA7XX_CLASS | (0x22 << 16) | (0x10 << 8))
|
||||
|
||||
void omap2xxx_check_revision(void);
|
||||
|
|
|
@ -297,12 +297,8 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer,
|
|||
if (IS_ERR(src))
|
||||
return PTR_ERR(src);
|
||||
|
||||
r = clk_set_parent(timer->fclk, src);
|
||||
if (r < 0) {
|
||||
pr_warn("%s: %s cannot set source\n", __func__, oh->name);
|
||||
clk_put(src);
|
||||
return r;
|
||||
}
|
||||
WARN(clk_set_parent(timer->fclk, src) < 0,
|
||||
"Cannot set timer parent clock, no PLL clock driver?");
|
||||
|
||||
clk_put(src);
|
||||
|
||||
|
|
|
@ -300,7 +300,7 @@ static void __init omap3_vc_init_pmic_signaling(struct voltagedomain *voltdm)
|
|||
|
||||
val = voltdm->read(OMAP3_PRM_POLCTRL_OFFSET);
|
||||
if (!(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL) ||
|
||||
(val & OMAP3430_PRM_POLCTRL_CLKREQ_POL)) {
|
||||
(val & OMAP3430_PRM_POLCTRL_OFFMODE_POL)) {
|
||||
val |= OMAP3430_PRM_POLCTRL_CLKREQ_POL;
|
||||
val &= ~OMAP3430_PRM_POLCTRL_OFFMODE_POL;
|
||||
pr_debug("PM: fixing sys_clkreq and sys_off_mode polarity to 0x%x\n",
|
||||
|
|
|
@ -45,6 +45,10 @@ struct pbias_regulator_data {
|
|||
int voltage;
|
||||
};
|
||||
|
||||
struct pbias_of_data {
|
||||
unsigned int offset;
|
||||
};
|
||||
|
||||
static const unsigned int pbias_volt_table[] = {
|
||||
1800000,
|
||||
3000000
|
||||
|
@ -102,8 +106,35 @@ static struct of_regulator_match pbias_matches[] = {
|
|||
};
|
||||
#define PBIAS_NUM_REGS ARRAY_SIZE(pbias_matches)
|
||||
|
||||
/* Offset from SCM general area (and syscon) base */
|
||||
|
||||
static const struct pbias_of_data pbias_of_data_omap2 = {
|
||||
.offset = 0x230,
|
||||
};
|
||||
|
||||
static const struct pbias_of_data pbias_of_data_omap3 = {
|
||||
.offset = 0x2b0,
|
||||
};
|
||||
|
||||
static const struct pbias_of_data pbias_of_data_omap4 = {
|
||||
.offset = 0x60,
|
||||
};
|
||||
|
||||
static const struct pbias_of_data pbias_of_data_omap5 = {
|
||||
.offset = 0x60,
|
||||
};
|
||||
|
||||
static const struct pbias_of_data pbias_of_data_dra7 = {
|
||||
.offset = 0xe00,
|
||||
};
|
||||
|
||||
static const struct of_device_id pbias_of_match[] = {
|
||||
{ .compatible = "ti,pbias-omap", },
|
||||
{ .compatible = "ti,pbias-omap2", .data = &pbias_of_data_omap2, },
|
||||
{ .compatible = "ti,pbias-omap3", .data = &pbias_of_data_omap3, },
|
||||
{ .compatible = "ti,pbias-omap4", .data = &pbias_of_data_omap4, },
|
||||
{ .compatible = "ti,pbias-omap5", .data = &pbias_of_data_omap5, },
|
||||
{ .compatible = "ti,pbias-dra7", .data = &pbias_of_data_dra7, },
|
||||
{},
|
||||
};
|
||||
MODULE_DEVICE_TABLE(of, pbias_of_match);
|
||||
|
@ -118,6 +149,9 @@ static int pbias_regulator_probe(struct platform_device *pdev)
|
|||
const struct pbias_reg_info *info;
|
||||
int ret = 0;
|
||||
int count, idx, data_idx = 0;
|
||||
const struct of_device_id *match;
|
||||
const struct pbias_of_data *data;
|
||||
unsigned int offset;
|
||||
|
||||
count = of_regulator_match(&pdev->dev, np, pbias_matches,
|
||||
PBIAS_NUM_REGS);
|
||||
|
@ -133,6 +167,20 @@ static int pbias_regulator_probe(struct platform_device *pdev)
|
|||
if (IS_ERR(syscon))
|
||||
return PTR_ERR(syscon);
|
||||
|
||||
match = of_match_device(of_match_ptr(pbias_of_match), &pdev->dev);
|
||||
if (match && match->data) {
|
||||
data = match->data;
|
||||
offset = data->offset;
|
||||
} else {
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res)
|
||||
return -EINVAL;
|
||||
|
||||
offset = res->start;
|
||||
dev_WARN(&pdev->dev,
|
||||
"using legacy dt data for pbias offset\n");
|
||||
}
|
||||
|
||||
cfg.regmap = syscon;
|
||||
cfg.dev = &pdev->dev;
|
||||
|
||||
|
@ -145,10 +193,6 @@ static int pbias_regulator_probe(struct platform_device *pdev)
|
|||
if (!info)
|
||||
return -ENODEV;
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (!res)
|
||||
return -EINVAL;
|
||||
|
||||
drvdata[data_idx].syscon = syscon;
|
||||
drvdata[data_idx].info = info;
|
||||
drvdata[data_idx].desc.name = info->name;
|
||||
|
@ -158,9 +202,9 @@ static int pbias_regulator_probe(struct platform_device *pdev)
|
|||
drvdata[data_idx].desc.volt_table = pbias_volt_table;
|
||||
drvdata[data_idx].desc.n_voltages = 2;
|
||||
drvdata[data_idx].desc.enable_time = info->enable_time;
|
||||
drvdata[data_idx].desc.vsel_reg = res->start;
|
||||
drvdata[data_idx].desc.vsel_reg = offset;
|
||||
drvdata[data_idx].desc.vsel_mask = info->vmode;
|
||||
drvdata[data_idx].desc.enable_reg = res->start;
|
||||
drvdata[data_idx].desc.enable_reg = offset;
|
||||
drvdata[data_idx].desc.enable_mask = info->enable_mask;
|
||||
drvdata[data_idx].desc.enable_val = info->enable;
|
||||
drvdata[data_idx].desc.disable_val = info->disable_val;
|
||||
|
|
Loading…
Reference in a new issue