mirror of
https://github.com/torvalds/linux
synced 2024-07-01 07:55:58 +00:00
Compare commits
21 Commits
b89f54aa8a
...
f5262a8c1d
Author | SHA1 | Date | |
---|---|---|---|
|
f5262a8c1d | ||
|
55027e6899 | ||
|
626737a579 | ||
|
7c7b1be19b | ||
|
7b848a3578 | ||
|
4ea4d4808e | ||
|
01b4b1d1ce | ||
|
5ef6914e0b | ||
|
e8448a6c81 | ||
|
adec57ff8e | ||
|
61fef29ad1 | ||
|
03ecbe4bb6 | ||
|
550dec8593 | ||
|
8da86499d4 | ||
|
cee77149eb | ||
|
9f0fad0382 | ||
|
dff5c3de21 | ||
|
955af6355d | ||
|
a69ce592cb | ||
|
a39741d38c | ||
|
0f721cfcc9 |
|
@ -29,7 +29,6 @@ properties:
|
||||||
- qcom,pm7325-gpio
|
- qcom,pm7325-gpio
|
||||||
- qcom,pm7550ba-gpio
|
- qcom,pm7550ba-gpio
|
||||||
- qcom,pm8005-gpio
|
- qcom,pm8005-gpio
|
||||||
- qcom,pm8008-gpio
|
|
||||||
- qcom,pm8018-gpio
|
- qcom,pm8018-gpio
|
||||||
- qcom,pm8019-gpio
|
- qcom,pm8019-gpio
|
||||||
- qcom,pm8038-gpio
|
- qcom,pm8038-gpio
|
||||||
|
@ -126,7 +125,6 @@ allOf:
|
||||||
compatible:
|
compatible:
|
||||||
contains:
|
contains:
|
||||||
enum:
|
enum:
|
||||||
- qcom,pm8008-gpio
|
|
||||||
- qcom,pmi8950-gpio
|
- qcom,pmi8950-gpio
|
||||||
- qcom,pmr735d-gpio
|
- qcom,pmr735d-gpio
|
||||||
then:
|
then:
|
||||||
|
@ -448,7 +446,6 @@ $defs:
|
||||||
- gpio1-gpio10 for pm7325
|
- gpio1-gpio10 for pm7325
|
||||||
- gpio1-gpio8 for pm7550ba
|
- gpio1-gpio8 for pm7550ba
|
||||||
- gpio1-gpio4 for pm8005
|
- gpio1-gpio4 for pm8005
|
||||||
- gpio1-gpio2 for pm8008
|
|
||||||
- gpio1-gpio6 for pm8018
|
- gpio1-gpio6 for pm8018
|
||||||
- gpio1-gpio12 for pm8038
|
- gpio1-gpio12 for pm8038
|
||||||
- gpio1-gpio40 for pm8058
|
- gpio1-gpio40 for pm8058
|
||||||
|
|
|
@ -140,7 +140,7 @@ the back cover. Both covers must also clearly and legibly identify
|
||||||
you as the publisher of these copies. The front cover must present
|
you as the publisher of these copies. The front cover must present
|
||||||
the full title with all words of the title equally prominent and
|
the full title with all words of the title equally prominent and
|
||||||
visible. You may add other material on the covers in addition.
|
visible. You may add other material on the covers in addition.
|
||||||
Copying with changes limited to the covers, as long as they preserve
|
Copying with changes limited to the covers, as long as they preserve this is changeed.....
|
||||||
the title of the Document and satisfy these conditions, can be treated
|
the title of the Document and satisfy these conditions, can be treated
|
||||||
as verbatim copying in other respects.
|
as verbatim copying in other respects.
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,7 @@ static const struct xpad_device {
|
||||||
{ 0x0738, 0xf738, "Super SFIV FightStick TE S", 0, XTYPE_XBOX360 },
|
{ 0x0738, 0xf738, "Super SFIV FightStick TE S", 0, XTYPE_XBOX360 },
|
||||||
{ 0x07ff, 0xffff, "Mad Catz GamePad", 0, XTYPE_XBOX360 },
|
{ 0x07ff, 0xffff, "Mad Catz GamePad", 0, XTYPE_XBOX360 },
|
||||||
{ 0x0b05, 0x1a38, "ASUS ROG RAIKIRI", 0, XTYPE_XBOXONE },
|
{ 0x0b05, 0x1a38, "ASUS ROG RAIKIRI", 0, XTYPE_XBOXONE },
|
||||||
|
{ 0x0b05, 0x1abb, "ASUS ROG RAIKIRI PRO", 0, XTYPE_XBOXONE },
|
||||||
{ 0x0c12, 0x0005, "Intec wireless", 0, XTYPE_XBOX },
|
{ 0x0c12, 0x0005, "Intec wireless", 0, XTYPE_XBOX },
|
||||||
{ 0x0c12, 0x8801, "Nyko Xbox Controller", 0, XTYPE_XBOX },
|
{ 0x0c12, 0x8801, "Nyko Xbox Controller", 0, XTYPE_XBOX },
|
||||||
{ 0x0c12, 0x8802, "Zeroplus Xbox Controller", 0, XTYPE_XBOX },
|
{ 0x0c12, 0x8802, "Zeroplus Xbox Controller", 0, XTYPE_XBOX },
|
||||||
|
|
|
@ -1476,16 +1476,47 @@ static void elantech_disconnect(struct psmouse *psmouse)
|
||||||
psmouse->private = NULL;
|
psmouse->private = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some hw_version 4 models fail to properly activate absolute mode on
|
||||||
|
* resume without going through disable/enable cycle.
|
||||||
|
*/
|
||||||
|
static const struct dmi_system_id elantech_needs_reenable[] = {
|
||||||
|
#if defined(CONFIG_DMI) && defined(CONFIG_X86)
|
||||||
|
{
|
||||||
|
/* Lenovo N24 */
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "81AF"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
#endif
|
||||||
|
{ }
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Put the touchpad back into absolute mode when reconnecting
|
* Put the touchpad back into absolute mode when reconnecting
|
||||||
*/
|
*/
|
||||||
static int elantech_reconnect(struct psmouse *psmouse)
|
static int elantech_reconnect(struct psmouse *psmouse)
|
||||||
{
|
{
|
||||||
|
int err;
|
||||||
|
|
||||||
psmouse_reset(psmouse);
|
psmouse_reset(psmouse);
|
||||||
|
|
||||||
if (elantech_detect(psmouse, 0))
|
if (elantech_detect(psmouse, 0))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
if (dmi_check_system(elantech_needs_reenable)) {
|
||||||
|
err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_DISABLE);
|
||||||
|
if (err)
|
||||||
|
psmouse_warn(psmouse, "failed to deactivate mouse on %s: %d\n",
|
||||||
|
psmouse->ps2dev.serio->phys, err);
|
||||||
|
|
||||||
|
err = ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_ENABLE);
|
||||||
|
if (err)
|
||||||
|
psmouse_warn(psmouse, "failed to reactivate mouse on %s: %d\n",
|
||||||
|
psmouse->ps2dev.serio->phys, err);
|
||||||
|
}
|
||||||
|
|
||||||
if (elantech_set_absolute_mode(psmouse)) {
|
if (elantech_set_absolute_mode(psmouse)) {
|
||||||
psmouse_err(psmouse,
|
psmouse_err(psmouse,
|
||||||
"failed to put touchpad back into absolute mode.\n");
|
"failed to put touchpad back into absolute mode.\n");
|
||||||
|
|
|
@ -76,7 +76,7 @@ static inline void i8042_write_command(int val)
|
||||||
#define SERIO_QUIRK_PROBE_DEFER BIT(5)
|
#define SERIO_QUIRK_PROBE_DEFER BIT(5)
|
||||||
#define SERIO_QUIRK_RESET_ALWAYS BIT(6)
|
#define SERIO_QUIRK_RESET_ALWAYS BIT(6)
|
||||||
#define SERIO_QUIRK_RESET_NEVER BIT(7)
|
#define SERIO_QUIRK_RESET_NEVER BIT(7)
|
||||||
#define SERIO_QUIRK_DIECT BIT(8)
|
#define SERIO_QUIRK_DIRECT BIT(8)
|
||||||
#define SERIO_QUIRK_DUMBKBD BIT(9)
|
#define SERIO_QUIRK_DUMBKBD BIT(9)
|
||||||
#define SERIO_QUIRK_NOLOOP BIT(10)
|
#define SERIO_QUIRK_NOLOOP BIT(10)
|
||||||
#define SERIO_QUIRK_NOTIMEOUT BIT(11)
|
#define SERIO_QUIRK_NOTIMEOUT BIT(11)
|
||||||
|
@ -1332,6 +1332,20 @@ static const struct dmi_system_id i8042_dmi_quirk_table[] __initconst = {
|
||||||
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
|
.driver_data = (void *)(SERIO_QUIRK_NOMUX | SERIO_QUIRK_RESET_ALWAYS |
|
||||||
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
|
SERIO_QUIRK_NOLOOP | SERIO_QUIRK_NOPNP)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* The Ayaneo Kun is a handheld device where some the buttons
|
||||||
|
* are handled by an AT keyboard. The keyboard is usually
|
||||||
|
* detected as raw, but sometimes, usually after a cold boot,
|
||||||
|
* it is detected as translated. Make sure that the keyboard
|
||||||
|
* is always in raw mode.
|
||||||
|
*/
|
||||||
|
.matches = {
|
||||||
|
DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "AYANEO"),
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "KUN"),
|
||||||
|
},
|
||||||
|
.driver_data = (void *)(SERIO_QUIRK_DIRECT)
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1655,7 +1669,7 @@ static void __init i8042_check_quirks(void)
|
||||||
if (quirks & SERIO_QUIRK_RESET_NEVER)
|
if (quirks & SERIO_QUIRK_RESET_NEVER)
|
||||||
i8042_reset = I8042_RESET_NEVER;
|
i8042_reset = I8042_RESET_NEVER;
|
||||||
}
|
}
|
||||||
if (quirks & SERIO_QUIRK_DIECT)
|
if (quirks & SERIO_QUIRK_DIRECT)
|
||||||
i8042_direct = true;
|
i8042_direct = true;
|
||||||
if (quirks & SERIO_QUIRK_DUMBKBD)
|
if (quirks & SERIO_QUIRK_DUMBKBD)
|
||||||
i8042_dumbkbd = true;
|
i8042_dumbkbd = true;
|
||||||
|
|
|
@ -1111,6 +1111,16 @@ static const struct of_device_id ads7846_dt_ids[] = {
|
||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(of, ads7846_dt_ids);
|
MODULE_DEVICE_TABLE(of, ads7846_dt_ids);
|
||||||
|
|
||||||
|
static const struct spi_device_id ads7846_spi_ids[] = {
|
||||||
|
{ "tsc2046", 7846 },
|
||||||
|
{ "ads7843", 7843 },
|
||||||
|
{ "ads7845", 7845 },
|
||||||
|
{ "ads7846", 7846 },
|
||||||
|
{ "ads7873", 7873 },
|
||||||
|
{ },
|
||||||
|
};
|
||||||
|
MODULE_DEVICE_TABLE(spi, ads7846_spi_ids);
|
||||||
|
|
||||||
static const struct ads7846_platform_data *ads7846_get_props(struct device *dev)
|
static const struct ads7846_platform_data *ads7846_get_props(struct device *dev)
|
||||||
{
|
{
|
||||||
struct ads7846_platform_data *pdata;
|
struct ads7846_platform_data *pdata;
|
||||||
|
@ -1386,10 +1396,10 @@ static struct spi_driver ads7846_driver = {
|
||||||
},
|
},
|
||||||
.probe = ads7846_probe,
|
.probe = ads7846_probe,
|
||||||
.remove = ads7846_remove,
|
.remove = ads7846_remove,
|
||||||
|
.id_table = ads7846_spi_ids,
|
||||||
};
|
};
|
||||||
|
|
||||||
module_spi_driver(ads7846_driver);
|
module_spi_driver(ads7846_driver);
|
||||||
|
|
||||||
MODULE_DESCRIPTION("ADS7846 TouchScreen Driver");
|
MODULE_DESCRIPTION("ADS7846 TouchScreen Driver");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_ALIAS("spi:ads7846");
|
|
||||||
|
|
|
@ -261,8 +261,8 @@ static int ili251x_read_touch_data(struct i2c_client *client, u8 *data)
|
||||||
if (!error && data[0] == 2) {
|
if (!error && data[0] == 2) {
|
||||||
error = i2c_master_recv(client, data + ILI251X_DATA_SIZE1,
|
error = i2c_master_recv(client, data + ILI251X_DATA_SIZE1,
|
||||||
ILI251X_DATA_SIZE2);
|
ILI251X_DATA_SIZE2);
|
||||||
if (error >= 0 && error != ILI251X_DATA_SIZE2)
|
if (error >= 0)
|
||||||
error = -EIO;
|
error = error == ILI251X_DATA_SIZE2 ? 0 : -EIO;
|
||||||
}
|
}
|
||||||
|
|
||||||
return error;
|
return error;
|
||||||
|
|
|
@ -245,7 +245,7 @@ static const char * const irq_type_names[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool persist_gpio_outputs;
|
static bool persist_gpio_outputs;
|
||||||
module_param(persist_gpio_outputs, bool, 0644);
|
module_param(persist_gpio_outputs, bool, 0444);
|
||||||
MODULE_PARM_DESC(persist_gpio_outputs, "Enable GPIO_OUT persistence when pin is freed");
|
MODULE_PARM_DESC(persist_gpio_outputs, "Enable GPIO_OUT persistence when pin is freed");
|
||||||
|
|
||||||
static inline u32 bcm2835_gpio_rd(struct bcm2835_pinctrl *pc, unsigned reg)
|
static inline u32 bcm2835_gpio_rd(struct bcm2835_pinctrl *pc, unsigned reg)
|
||||||
|
|
|
@ -1106,8 +1106,8 @@ static struct pinctrl *create_pinctrl(struct device *dev,
|
||||||
* an -EPROBE_DEFER later, as that is the worst case.
|
* an -EPROBE_DEFER later, as that is the worst case.
|
||||||
*/
|
*/
|
||||||
if (ret == -EPROBE_DEFER) {
|
if (ret == -EPROBE_DEFER) {
|
||||||
pinctrl_free(p, false);
|
|
||||||
mutex_unlock(&pinctrl_maps_mutex);
|
mutex_unlock(&pinctrl_maps_mutex);
|
||||||
|
pinctrl_free(p, false);
|
||||||
return ERR_PTR(ret);
|
return ERR_PTR(ret);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -634,23 +634,68 @@ static struct rockchip_mux_recalced_data rk3308_mux_recalced_data[] = {
|
||||||
|
|
||||||
static struct rockchip_mux_recalced_data rk3328_mux_recalced_data[] = {
|
static struct rockchip_mux_recalced_data rk3328_mux_recalced_data[] = {
|
||||||
{
|
{
|
||||||
.num = 2,
|
/* gpio2_b7_sel */
|
||||||
.pin = 12,
|
|
||||||
.reg = 0x24,
|
|
||||||
.bit = 8,
|
|
||||||
.mask = 0x3
|
|
||||||
}, {
|
|
||||||
.num = 2,
|
.num = 2,
|
||||||
.pin = 15,
|
.pin = 15,
|
||||||
.reg = 0x28,
|
.reg = 0x28,
|
||||||
.bit = 0,
|
.bit = 0,
|
||||||
.mask = 0x7
|
.mask = 0x7
|
||||||
}, {
|
}, {
|
||||||
|
/* gpio2_c7_sel */
|
||||||
.num = 2,
|
.num = 2,
|
||||||
.pin = 23,
|
.pin = 23,
|
||||||
.reg = 0x30,
|
.reg = 0x30,
|
||||||
.bit = 14,
|
.bit = 14,
|
||||||
.mask = 0x3
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b1_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 9,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 2,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b2_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 10,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 4,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b3_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 11,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 6,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b4_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 12,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 8,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b5_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 13,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 10,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b6_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 14,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 12,
|
||||||
|
.mask = 0x3
|
||||||
|
}, {
|
||||||
|
/* gpio3_b7_sel */
|
||||||
|
.num = 3,
|
||||||
|
.pin = 15,
|
||||||
|
.reg = 0x44,
|
||||||
|
.bit = 14,
|
||||||
|
.mask = 0x3
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -2433,6 +2478,7 @@ static int rockchip_get_pull(struct rockchip_pin_bank *bank, int pin_num)
|
||||||
case RK3188:
|
case RK3188:
|
||||||
case RK3288:
|
case RK3288:
|
||||||
case RK3308:
|
case RK3308:
|
||||||
|
case RK3328:
|
||||||
case RK3368:
|
case RK3368:
|
||||||
case RK3399:
|
case RK3399:
|
||||||
case RK3568:
|
case RK3568:
|
||||||
|
@ -2491,6 +2537,7 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank,
|
||||||
case RK3188:
|
case RK3188:
|
||||||
case RK3288:
|
case RK3288:
|
||||||
case RK3308:
|
case RK3308:
|
||||||
|
case RK3328:
|
||||||
case RK3368:
|
case RK3368:
|
||||||
case RK3399:
|
case RK3399:
|
||||||
case RK3568:
|
case RK3568:
|
||||||
|
@ -2704,8 +2751,10 @@ static int rockchip_pmx_set(struct pinctrl_dev *pctldev, unsigned selector,
|
||||||
|
|
||||||
if (ret) {
|
if (ret) {
|
||||||
/* revert the already done pin settings */
|
/* revert the already done pin settings */
|
||||||
for (cnt--; cnt >= 0; cnt--)
|
for (cnt--; cnt >= 0; cnt--) {
|
||||||
|
bank = pin_to_bank(info, pins[cnt]);
|
||||||
rockchip_set_mux(bank, pins[cnt] - bank->pin_base, 0);
|
rockchip_set_mux(bank, pins[cnt] - bank->pin_base, 0);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2753,6 +2802,7 @@ static bool rockchip_pinconf_pull_valid(struct rockchip_pin_ctrl *ctrl,
|
||||||
case RK3188:
|
case RK3188:
|
||||||
case RK3288:
|
case RK3288:
|
||||||
case RK3308:
|
case RK3308:
|
||||||
|
case RK3328:
|
||||||
case RK3368:
|
case RK3368:
|
||||||
case RK3399:
|
case RK3399:
|
||||||
case RK3568:
|
case RK3568:
|
||||||
|
@ -3763,7 +3813,7 @@ static struct rockchip_pin_bank rk3328_pin_banks[] = {
|
||||||
PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0),
|
PIN_BANK_IOMUX_FLAGS(0, 32, "gpio0", 0, 0, 0, 0),
|
||||||
PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0),
|
PIN_BANK_IOMUX_FLAGS(1, 32, "gpio1", 0, 0, 0, 0),
|
||||||
PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0,
|
PIN_BANK_IOMUX_FLAGS(2, 32, "gpio2", 0,
|
||||||
IOMUX_WIDTH_3BIT,
|
0,
|
||||||
IOMUX_WIDTH_3BIT,
|
IOMUX_WIDTH_3BIT,
|
||||||
0),
|
0),
|
||||||
PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
|
PIN_BANK_IOMUX_FLAGS(3, 32, "gpio3",
|
||||||
|
@ -3777,7 +3827,7 @@ static struct rockchip_pin_ctrl rk3328_pin_ctrl = {
|
||||||
.pin_banks = rk3328_pin_banks,
|
.pin_banks = rk3328_pin_banks,
|
||||||
.nr_banks = ARRAY_SIZE(rk3328_pin_banks),
|
.nr_banks = ARRAY_SIZE(rk3328_pin_banks),
|
||||||
.label = "RK3328-GPIO",
|
.label = "RK3328-GPIO",
|
||||||
.type = RK3288,
|
.type = RK3328,
|
||||||
.grf_mux_offset = 0x0,
|
.grf_mux_offset = 0x0,
|
||||||
.iomux_recalced = rk3328_mux_recalced_data,
|
.iomux_recalced = rk3328_mux_recalced_data,
|
||||||
.niomux_recalced = ARRAY_SIZE(rk3328_mux_recalced_data),
|
.niomux_recalced = ARRAY_SIZE(rk3328_mux_recalced_data),
|
||||||
|
|
|
@ -193,6 +193,7 @@ enum rockchip_pinctrl_type {
|
||||||
RK3188,
|
RK3188,
|
||||||
RK3288,
|
RK3288,
|
||||||
RK3308,
|
RK3308,
|
||||||
|
RK3328,
|
||||||
RK3368,
|
RK3368,
|
||||||
RK3399,
|
RK3399,
|
||||||
RK3568,
|
RK3568,
|
||||||
|
|
|
@ -486,6 +486,7 @@ static int tps6594_pinctrl_probe(struct platform_device *pdev)
|
||||||
break;
|
break;
|
||||||
case TPS6593:
|
case TPS6593:
|
||||||
case TPS6594:
|
case TPS6594:
|
||||||
|
case LP8764:
|
||||||
pctrl_desc->pins = tps6594_pins;
|
pctrl_desc->pins = tps6594_pins;
|
||||||
pctrl_desc->npins = ARRAY_SIZE(tps6594_pins);
|
pctrl_desc->npins = ARRAY_SIZE(tps6594_pins);
|
||||||
|
|
||||||
|
|
|
@ -1207,7 +1207,6 @@ static const struct of_device_id pmic_gpio_of_match[] = {
|
||||||
{ .compatible = "qcom,pm7325-gpio", .data = (void *) 10 },
|
{ .compatible = "qcom,pm7325-gpio", .data = (void *) 10 },
|
||||||
{ .compatible = "qcom,pm7550ba-gpio", .data = (void *) 8},
|
{ .compatible = "qcom,pm7550ba-gpio", .data = (void *) 8},
|
||||||
{ .compatible = "qcom,pm8005-gpio", .data = (void *) 4 },
|
{ .compatible = "qcom,pm8005-gpio", .data = (void *) 4 },
|
||||||
{ .compatible = "qcom,pm8008-gpio", .data = (void *) 2 },
|
|
||||||
{ .compatible = "qcom,pm8019-gpio", .data = (void *) 6 },
|
{ .compatible = "qcom,pm8019-gpio", .data = (void *) 6 },
|
||||||
/* pm8150 has 10 GPIOs with holes on 2, 5, 7 and 8 */
|
/* pm8150 has 10 GPIOs with holes on 2, 5, 7 and 8 */
|
||||||
{ .compatible = "qcom,pm8150-gpio", .data = (void *) 10 },
|
{ .compatible = "qcom,pm8150-gpio", .data = (void *) 10 },
|
||||||
|
|
|
@ -2071,11 +2071,11 @@ static void rzg2l_gpio_irq_restore(struct rzg2l_pinctrl *pctrl)
|
||||||
* This has to be atomically executed to protect against a concurrent
|
* This has to be atomically executed to protect against a concurrent
|
||||||
* interrupt.
|
* interrupt.
|
||||||
*/
|
*/
|
||||||
raw_spin_lock_irqsave(&pctrl->lock.rlock, flags);
|
spin_lock_irqsave(&pctrl->lock, flags);
|
||||||
ret = rzg2l_gpio_irq_set_type(data, irqd_get_trigger_type(data));
|
ret = rzg2l_gpio_irq_set_type(data, irqd_get_trigger_type(data));
|
||||||
if (!ret && !irqd_irq_disabled(data))
|
if (!ret && !irqd_irq_disabled(data))
|
||||||
rzg2l_gpio_irq_enable(data);
|
rzg2l_gpio_irq_enable(data);
|
||||||
raw_spin_unlock_irqrestore(&pctrl->lock.rlock, flags);
|
spin_unlock_irqrestore(&pctrl->lock, flags);
|
||||||
|
|
||||||
if (ret)
|
if (ret)
|
||||||
dev_crit(pctrl->dev, "Failed to set IRQ type for virq=%u\n", virq);
|
dev_crit(pctrl->dev, "Failed to set IRQ type for virq=%u\n", virq);
|
||||||
|
|
|
@ -3,3 +3,4 @@ key = # comment
|
||||||
"value2" # comment2
|
"value2" # comment2
|
||||||
,
|
,
|
||||||
"value3"
|
"value3"
|
||||||
|
This is just only for my learning purpose.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user