diff options
author | Oleksandr Suvorov <oleksandr.suvorov@toradex.com> | 2020-11-25 17:09:48 +0200 |
---|---|---|
committer | Oleksandr Suvorov <oleksandr.suvorov@toradex.com> | 2020-11-25 17:45:21 +0200 |
commit | 4daa584ef919a58b90e1957012ffb6eaad5dc6bd (patch) | |
tree | 28dd120ae3d8e26b7810bc55fe85503032277090 | |
parent | fe9762283060567ac665a57b2d636052f24bd3c2 (diff) |
mfd: stmpe: support disabling sub-functions
Add support of sub-functions disabling. It allows one to
define and turn on sub-function devices in different
devicetree files.
Signed-off-by: Oleksandr Suvorov <oleksandr.suvorov@toradex.com>
-rw-r--r-- | drivers/mfd/stmpe.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/drivers/mfd/stmpe.c b/drivers/mfd/stmpe.c index 1aee3b3253fc..0a7b649c3d8d 100644 --- a/drivers/mfd/stmpe.c +++ b/drivers/mfd/stmpe.c @@ -1358,18 +1358,20 @@ static void stmpe_of_probe(struct stmpe_platform_data *pdata, pdata->autosleep = (pdata->autosleep_timeout) ? true : false; for_each_child_of_node(np, child) { - if (of_node_name_eq(child, "stmpe_gpio")) { - pdata->blocks |= STMPE_BLOCK_GPIO; - } else if (of_node_name_eq(child, "stmpe_keypad")) { - pdata->blocks |= STMPE_BLOCK_KEYPAD; - } else if (of_node_name_eq(child, "stmpe_touchscreen")) { - pdata->blocks |= STMPE_BLOCK_TOUCHSCREEN; - } else if (of_node_name_eq(child, "stmpe_adc")) { - pdata->blocks |= STMPE_BLOCK_ADC; - } else if (of_node_name_eq(child, "stmpe_pwm")) { - pdata->blocks |= STMPE_BLOCK_PWM; - } else if (of_node_name_eq(child, "stmpe_rotator")) { - pdata->blocks |= STMPE_BLOCK_ROTATOR; + if (of_device_is_available(child)) { + if (of_node_name_eq(child, "stmpe_gpio")) { + pdata->blocks |= STMPE_BLOCK_GPIO; + } else if (of_node_name_eq(child, "stmpe_keypad")) { + pdata->blocks |= STMPE_BLOCK_KEYPAD; + } else if (of_node_name_eq(child, "stmpe_touchscreen")) { + pdata->blocks |= STMPE_BLOCK_TOUCHSCREEN; + } else if (of_node_name_eq(child, "stmpe_adc")) { + pdata->blocks |= STMPE_BLOCK_ADC; + } else if (of_node_name_eq(child, "stmpe_pwm")) { + pdata->blocks |= STMPE_BLOCK_PWM; + } else if (of_node_name_eq(child, "stmpe_rotator")) { + pdata->blocks |= STMPE_BLOCK_ROTATOR; + } } } } |