* [PATCH v2 0/4] Add touch key driver support for TM2 [not found] <CGME20170105082715epcas1p10e0820a792ba9d89cd165299d6602654@epcas1p1.samsung.com> @ 2017-01-05 8:27 ` Jaechul Lee [not found] ` <CGME20170105082715epcas1p19fbee2c06efcd99a34bbff491bccb789@epcas1p1.samsung.com> ` (3 more replies) 0 siblings, 4 replies; 12+ messages in thread From: Jaechul Lee @ 2017-01-05 8:27 UTC (permalink / raw) To: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Jaechul Lee, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc Hi, This patchset adds support for the tm2 touchkey device. The driver has been ported from Tizen Kernel, originally written by Beomho. I ported it to the latest mainline Kernel. The patchset applies on next-20170105. Changes in v2: - fixed reviews from Javier, Dmitry - refactored power enable/disable functions. - reordered signed-offs in patch 2, while patch 4 is left as it was as Andi copy pasted the node to the new tm2.dts file - added Jarvier's (patch 1,2,4) and Krzysztof's (patch 4) reviews and Rob's Ack - patch 3 diff has been generated with -B50% Best Regards, Jaechul Andi Shyti (1): arm64: dts: exynos: make tm2 and tm2e independent from each other Jaechul Lee (3): input: Add support for the tm2 touchkey device driver input: tm2-touchkey: Add touchkey driver support for TM2 arm64: dts: exynos: Add tm2 touchkey node .../bindings/input/samsung,tm2-touchkey.txt | 27 + .../boot/dts/exynos/exynos5433-tm2-common.dtsi | 1116 ++++++++++++++++++++ arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 1105 +------------------ arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 2 +- drivers/input/keyboard/Kconfig | 11 + drivers/input/keyboard/Makefile | 1 + drivers/input/keyboard/tm2-touchkey.c | 280 +++++ 7 files changed, 1445 insertions(+), 1097 deletions(-) create mode 100644 Documentation/devicetree/bindings/input/samsung,tm2-touchkey.txt create mode 100644 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi create mode 100644 drivers/input/keyboard/tm2-touchkey.c -- 2.7.4 ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <CGME20170105082715epcas1p19fbee2c06efcd99a34bbff491bccb789@epcas1p1.samsung.com>]
* [PATCH v2 1/4] input: Add support for the tm2 touchkey device driver [not found] ` <CGME20170105082715epcas1p19fbee2c06efcd99a34bbff491bccb789@epcas1p1.samsung.com> @ 2017-01-05 8:27 ` Jaechul Lee 0 siblings, 0 replies; 12+ messages in thread From: Jaechul Lee @ 2017-01-05 8:27 UTC (permalink / raw) To: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Jaechul Lee, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc This patch adds the binding description of the tm2 touchkey device driver. Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com> Reviewed-by: Andi Shyti <andi.shyti@samsung.com> Acked-by: Rob Herring <robh@kernel.org> --- .../bindings/input/samsung,tm2-touchkey.txt | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 Documentation/devicetree/bindings/input/samsung,tm2-touchkey.txt diff --git a/Documentation/devicetree/bindings/input/samsung,tm2-touchkey.txt b/Documentation/devicetree/bindings/input/samsung,tm2-touchkey.txt new file mode 100644 index 0000000..4de1af0 --- /dev/null +++ b/Documentation/devicetree/bindings/input/samsung,tm2-touchkey.txt @@ -0,0 +1,27 @@ +Samsung tm2-touchkey + +Required properties: +- compatible: must be "samsung,tm2-touchkey" +- reg: I2C address of the chip. +- interrupt-parent: a phandle for the interrupt controller (see interrupt + binding[0]). +- interrupts: interrupt to which the chip is connected (see interrupt + binding[0]). +- vcc-supply : internal regulator output. 1.8V +- vdd-supply : power supply for IC 3.3V + +[0]: Documentation/devicetree/bindings/interrupt-controller/interrupts.txt + +Example: + &i2c0 { + /* ... */ + + touchkey@20 { + compatible = "samsung,tm2-touchkey"; + reg = <0x20>; + interrupt-parent = <&gpa3>; + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + vcc-supply=<&ldo32_reg>; + vdd-supply=<&ldo33_reg>; + }; + }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
[parent not found: <CGME20170105082715epcas1p108f8213ce8ea52b9b58f9f2de64a1b94@epcas1p1.samsung.com>]
* [PATCH v2 2/4] input: tm2-touchkey: Add touchkey driver support for TM2 [not found] ` <CGME20170105082715epcas1p108f8213ce8ea52b9b58f9f2de64a1b94@epcas1p1.samsung.com> @ 2017-01-05 8:27 ` Jaechul Lee 0 siblings, 0 replies; 12+ messages in thread From: Jaechul Lee @ 2017-01-05 8:27 UTC (permalink / raw) To: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Jaechul Lee, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc This patch adds support for the TM2 touch key and led functionality. The driver interfaces with userspace through an input device and reports KEY_PHONE and KEY_BACK event types. LED brightness can be controlled by "/sys/class/leds/tm2-touchkey/brightness". Signed-off-by: Beomho Seo <beomho.seo@samsung.com> Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com> Reviewed-by: Andi Shyti <andi.shyti@samsung.com> --- drivers/input/keyboard/Kconfig | 11 ++ drivers/input/keyboard/Makefile | 1 + drivers/input/keyboard/tm2-touchkey.c | 280 ++++++++++++++++++++++++++++++++++ 3 files changed, 292 insertions(+) create mode 100644 drivers/input/keyboard/tm2-touchkey.c diff --git a/drivers/input/keyboard/Kconfig b/drivers/input/keyboard/Kconfig index cbd75cf..e6e9858 100644 --- a/drivers/input/keyboard/Kconfig +++ b/drivers/input/keyboard/Kconfig @@ -666,6 +666,17 @@ config KEYBOARD_TC3589X To compile this driver as a module, choose M here: the module will be called tc3589x-keypad. +config KEYBOARD_TM2_TOUCHKEY + tristate "tm2-touchkey support" + depends on I2C + depends on LEDS_CLASS + help + Say Y here to enable device driver for tm2-touchkey with + LED control for the Exynos5433 TM2 board. + + To compile this driver as a module, choose M here. + module will be called tm2-touchkey. + config KEYBOARD_TWL4030 tristate "TI TWL4030/TWL5030/TPS659x0 keypad support" depends on TWL4030_CORE diff --git a/drivers/input/keyboard/Makefile b/drivers/input/keyboard/Makefile index d9f4cfc..7d9acff 100644 --- a/drivers/input/keyboard/Makefile +++ b/drivers/input/keyboard/Makefile @@ -61,6 +61,7 @@ obj-$(CONFIG_KEYBOARD_SUN4I_LRADC) += sun4i-lradc-keys.o obj-$(CONFIG_KEYBOARD_SUNKBD) += sunkbd.o obj-$(CONFIG_KEYBOARD_TC3589X) += tc3589x-keypad.o obj-$(CONFIG_KEYBOARD_TEGRA) += tegra-kbc.o +obj-$(CONFIG_KEYBOARD_TM2_TOUCHKEY) += tm2-touchkey.o obj-$(CONFIG_KEYBOARD_TWL4030) += twl4030_keypad.o obj-$(CONFIG_KEYBOARD_XTKBD) += xtkbd.o obj-$(CONFIG_KEYBOARD_W90P910) += w90p910_keypad.o diff --git a/drivers/input/keyboard/tm2-touchkey.c b/drivers/input/keyboard/tm2-touchkey.c new file mode 100644 index 0000000..92eacb6 --- /dev/null +++ b/drivers/input/keyboard/tm2-touchkey.c @@ -0,0 +1,280 @@ +/* + * TM2 touchkey device driver + * + * Copyright 2005 Phil Blundell + * Copyright 2016 Samsung Electronics Co., Ltd. + * + * Author: Beomho Seo <beomho.seo@samsung.com> + * Author: Jaechul Lee <jcsing.lee@samsung.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <linux/bitops.h> +#include <linux/delay.h> +#include <linux/device.h> +#include <linux/i2c.h> +#include <linux/input.h> +#include <linux/interrupt.h> +#include <linux/irq.h> +#include <linux/leds.h> +#include <linux/module.h> +#include <linux/of.h> +#include <linux/pm.h> +#include <linux/regulator/consumer.h> + +#define TM2_TOUCHKEY_DEV_NAME "tm2-touchkey" +#define TM2_TOUCHKEY_KEYCODE_REG 0x03 +#define TM2_TOUCHKEY_BASE_REG 0x00 +#define TM2_TOUCHKEY_CMD_LED_ON 0x10 +#define TM2_TOUCHKEY_CMD_LED_OFF 0x20 +#define TM2_TOUCHKEY_BIT_PRESS_EV BIT(3) +#define TM2_TOUCHKEY_BIT_KEYCODE GENMASK(2, 0) +#define TM2_TOUCHKEY_LED_VOLTAGE_MIN 2500000 +#define TM2_TOUCHKEY_LED_VOLTAGE_MAX 3300000 + +enum { + TM2_TOUCHKEY_KEY_MENU = 0x1, + TM2_TOUCHKEY_KEY_BACK, +}; + +struct tm2_touchkey_data { + struct i2c_client *client; + struct input_dev *input_dev; + struct led_classdev led_dev; + struct regulator_bulk_data regulators[2]; + + u8 keycode_type; + u8 pressed; +}; + +static void tm2_touchkey_led_brightness_set(struct led_classdev *led_dev, + enum led_brightness brightness) +{ + struct tm2_touchkey_data *touchkey = + container_of(led_dev, struct tm2_touchkey_data, led_dev); + u32 volt; + u8 data; + + if (brightness == LED_OFF) { + volt = TM2_TOUCHKEY_LED_VOLTAGE_MIN; + data = TM2_TOUCHKEY_CMD_LED_OFF; + } else { + volt = TM2_TOUCHKEY_LED_VOLTAGE_MAX; + data = TM2_TOUCHKEY_CMD_LED_ON; + } + + regulator_set_voltage(touchkey->regulators[1].consumer, volt, volt); + i2c_smbus_write_byte_data(touchkey->client, + TM2_TOUCHKEY_BASE_REG, data); +} + +static int tm2_touchkey_power_enable(struct tm2_touchkey_data *touchkey) +{ + int ret = 0; + + ret = regulator_bulk_enable(ARRAY_SIZE(touchkey->regulators), + touchkey->regulators); + if (ret) + return ret; + + /* waiting for device initialization, at least 150ms */ + msleep(150); + + return 0; +} + +static void tm2_touchkey_power_disable(void *data) +{ + struct tm2_touchkey_data *touchkey = data; + + regulator_bulk_disable(ARRAY_SIZE(touchkey->regulators), + touchkey->regulators); +} + +static irqreturn_t tm2_touchkey_irq_handler(int irq, void *devid) +{ + struct tm2_touchkey_data *touchkey = devid; + u32 data; + + data = i2c_smbus_read_byte_data(touchkey->client, + TM2_TOUCHKEY_KEYCODE_REG); + + if (data < 0) { + dev_err(&touchkey->client->dev, "Failed to read i2c data\n"); + return IRQ_HANDLED; + } + + touchkey->keycode_type = data & TM2_TOUCHKEY_BIT_KEYCODE; + touchkey->pressed = !(data & TM2_TOUCHKEY_BIT_PRESS_EV); + + if (touchkey->keycode_type != TM2_TOUCHKEY_KEY_MENU && + touchkey->keycode_type != TM2_TOUCHKEY_KEY_BACK) { + dev_warn(&touchkey->client->dev, "Skip unhandled keycode(%d)\n", + touchkey->keycode_type); + return IRQ_HANDLED; + } + + if (!touchkey->pressed) { + input_report_key(touchkey->input_dev, KEY_PHONE, 0); + input_report_key(touchkey->input_dev, KEY_BACK, 0); + } else { + if (touchkey->keycode_type == TM2_TOUCHKEY_KEY_MENU) + input_report_key(touchkey->input_dev, + KEY_PHONE, 1); + else + input_report_key(touchkey->input_dev, + KEY_BACK, 1); + } + input_sync(touchkey->input_dev); + + return IRQ_HANDLED; +} + +static int tm2_touchkey_probe(struct i2c_client *client, + const struct i2c_device_id *id) +{ + struct tm2_touchkey_data *touchkey; + int ret; + + ret = i2c_check_functionality(client->adapter, + I2C_FUNC_SMBUS_BYTE | + I2C_FUNC_SMBUS_BYTE_DATA); + if (!ret) { + dev_err(&client->dev, "No I2C functionality found\n"); + return -ENODEV; + } + + touchkey = devm_kzalloc(&client->dev, sizeof(*touchkey), GFP_KERNEL); + if (!touchkey) + return -ENOMEM; + + touchkey->client = client; + i2c_set_clientdata(client, touchkey); + + /* regulators */ + touchkey->regulators[0].supply = "vcc"; + touchkey->regulators[1].supply = "vdd"; + ret = devm_regulator_bulk_get(&client->dev, + ARRAY_SIZE(touchkey->regulators), + touchkey->regulators); + if (ret) { + dev_err(&client->dev, "Failed to get regulators\n"); + return ret; + } + + /* power */ + ret = tm2_touchkey_power_enable(touchkey); + if (ret) { + dev_err(&client->dev, "Failed to enable power\n"); + return ret; + } + + ret = devm_add_action_or_reset(&client->dev, + tm2_touchkey_power_disable, touchkey); + if (ret) + return ret; + + /* input device */ + touchkey->input_dev = devm_input_allocate_device(&client->dev); + if (!touchkey->input_dev) { + dev_err(&client->dev, "Failed to alloc input device\n"); + return -ENOMEM; + } + touchkey->input_dev->name = TM2_TOUCHKEY_DEV_NAME; + touchkey->input_dev->id.bustype = BUS_I2C; + + set_bit(EV_KEY, touchkey->input_dev->evbit); + input_set_capability(touchkey->input_dev, EV_KEY, KEY_PHONE); + input_set_capability(touchkey->input_dev, EV_KEY, KEY_BACK); + + input_set_drvdata(touchkey->input_dev, touchkey); + + ret = input_register_device(touchkey->input_dev); + if (ret) { + dev_err(&client->dev, "Failed to register input device\n"); + return ret; + } + + /* irq */ + ret = devm_request_threaded_irq(&client->dev, + client->irq, NULL, + tm2_touchkey_irq_handler, + IRQF_ONESHOT, TM2_TOUCHKEY_DEV_NAME, + touchkey); + if (ret) { + dev_err(&client->dev, "Failed to request threaded irq\n"); + return ret; + } + + /* led device */ + touchkey->led_dev.name = TM2_TOUCHKEY_DEV_NAME; + touchkey->led_dev.brightness = LED_FULL; + touchkey->led_dev.max_brightness = LED_FULL; + touchkey->led_dev.brightness_set = tm2_touchkey_led_brightness_set; + + ret = devm_led_classdev_register(&client->dev, &touchkey->led_dev); + if (ret < 0) { + dev_err(&client->dev, "Failed to register touchkey led\n"); + return ret; + } + + return 0; +} + +static int __maybe_unused tm2_touchkey_suspend(struct device *dev) +{ + struct tm2_touchkey_data *touchkey = dev_get_drvdata(dev); + + disable_irq(touchkey->client->irq); + tm2_touchkey_power_disable(touchkey); + + return 0; +} + +static int __maybe_unused tm2_touchkey_resume(struct device *dev) +{ + struct tm2_touchkey_data *touchkey = dev_get_drvdata(dev); + int ret; + + enable_irq(touchkey->client->irq); + ret = tm2_touchkey_power_enable(touchkey); + if (ret) + dev_err(dev, "Failed to enable power\n"); + + return ret; +} + +static SIMPLE_DEV_PM_OPS(tm2_touchkey_pm_ops, tm2_touchkey_suspend, + tm2_touchkey_resume); + +static const struct i2c_device_id tm2_touchkey_id_table[] = { + {TM2_TOUCHKEY_DEV_NAME, 0}, + {}, +}; +MODULE_DEVICE_TABLE(i2c, tm2_touchkey_id_table); + +static const struct of_device_id tm2_touchkey_of_match[] = { + {.compatible = "samsung,tm2-touchkey",}, + {}, +}; +MODULE_DEVICE_TABLE(of, tm2_touchkey_of_match); + +static struct i2c_driver tm2_touchkey_driver = { + .driver = { + .name = TM2_TOUCHKEY_DEV_NAME, + .pm = &tm2_touchkey_pm_ops, + .of_match_table = of_match_ptr(tm2_touchkey_of_match), + }, + .probe = tm2_touchkey_probe, + .id_table = tm2_touchkey_id_table, +}; + +module_i2c_driver(tm2_touchkey_driver); + +MODULE_AUTHOR("Beomho Seo <beomho.seo@samsung.com>"); +MODULE_AUTHOR("Jaechul Lee <jcsing.lee@samsung.com>"); +MODULE_DESCRIPTION("Samsung touchkey driver"); +MODULE_LICENSE("GPL v2"); -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
[parent not found: <CGME20170105082716epcas1p1f2a6eea40d842e2d8f7f7f54c029bc82@epcas1p1.samsung.com>]
* [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other [not found] ` <CGME20170105082716epcas1p1f2a6eea40d842e2d8f7f7f54c029bc82@epcas1p1.samsung.com> @ 2017-01-05 8:27 ` Jaechul Lee 2017-01-05 9:13 ` Chanwoo Choi 0 siblings, 1 reply; 12+ messages in thread From: Jaechul Lee @ 2017-01-05 8:27 UTC (permalink / raw) To: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Jaechul Lee, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc From: Andi Shyti <andi.shyti@samsung.com> Currently tm2e dts includes tm2 but there are some differences between the two boards and tm2 has some properties that tm2e doesn't have. That's why it's important to keep the two dts files independent and put all the commonalities in a tm2-common.dtsi file. Signed-off-by: Andi Shyti <andi.shyti@samsung.com> Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> --- .../boot/dts/exynos/exynos5433-tm2-common.dtsi | 1116 +++++++++++++++++++ arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 1138 +------------------- arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 2 +- 3 files changed, 1136 insertions(+), 1120 deletions(-) create mode 100644 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi rewrite arch/arm64/boot/dts/exynos/exynos5433-tm2.dts (98%) diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi new file mode 100644 index 0000000..7ad0019 --- /dev/null +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi @@ -0,0 +1,1116 @@ +/* + * SAMSUNG Exynos5433 TM2 board device tree source + * + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Device tree source file for Samsung's TM2 board which is based on + * Samsung Exynos5433 SoC. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +/dts-v1/; +#include "exynos5433.dtsi" +#include <dt-bindings/clock/samsung,s2mps11.h> +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/input/input.h> +#include <dt-bindings/interrupt-controller/irq.h> + +/ { + aliases { + gsc0 = &gsc_0; + gsc1 = &gsc_1; + gsc2 = &gsc_2; + pinctrl0 = &pinctrl_alive; + pinctrl1 = &pinctrl_aud; + pinctrl2 = &pinctrl_cpif; + pinctrl3 = &pinctrl_ese; + pinctrl4 = &pinctrl_finger; + pinctrl5 = &pinctrl_fsys; + pinctrl6 = &pinctrl_imem; + pinctrl7 = &pinctrl_nfc; + pinctrl8 = &pinctrl_peric; + pinctrl9 = &pinctrl_touch; + serial0 = &serial_0; + serial1 = &serial_1; + serial2 = &serial_2; + serial3 = &serial_3; + spi0 = &spi_0; + spi1 = &spi_1; + spi2 = &spi_2; + spi3 = &spi_3; + spi4 = &spi_4; + mshc0 = &mshc_0; + mshc2 = &mshc_2; + }; + + chosen { + stdout-path = &serial_1; + }; + + memory@20000000 { + device_type = "memory"; + reg = <0x0 0x20000000 0x0 0xc0000000>; + }; + + gpio-keys { + compatible = "gpio-keys"; + + power-key { + gpios = <&gpa2 7 GPIO_ACTIVE_LOW>; + linux,code = <KEY_POWER>; + label = "power key"; + debounce-interval = <10>; + }; + + volume-up-key { + gpios = <&gpa2 0 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEUP>; + label = "volume-up key"; + debounce-interval = <10>; + }; + + volume-down-key { + gpios = <&gpa2 1 GPIO_ACTIVE_LOW>; + linux,code = <KEY_VOLUMEDOWN>; + label = "volume-down key"; + debounce-interval = <10>; + }; + + homepage-key { + gpios = <&gpa0 3 GPIO_ACTIVE_LOW>; + linux,code = <KEY_MENU>; + label = "homepage key"; + debounce-interval = <10>; + }; + }; + + i2c_max98504: i2c-gpio-0 { + compatible = "i2c-gpio"; + gpios = <&gpd0 1 GPIO_ACTIVE_HIGH /* SPK_AMP_SDA */ + &gpd0 0 GPIO_ACTIVE_HIGH /* SPK_AMP_SCL */ >; + i2c-gpio,delay-us = <2>; + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + + max98504: max98504@31 { + compatible = "maxim,max98504"; + reg = <0x31>; + maxim,rx-path = <1>; + maxim,tx-path = <1>; + maxim,tx-channel-mask = <3>; + maxim,tx-channel-source = <2>; + }; + }; + + sound { + compatible = "samsung,tm2-audio"; + audio-codec = <&wm5110>; + i2s-controller = <&i2s0>; + audio-amplifier = <&max98504>; + mic-bias-gpios = <&gpr3 2 GPIO_ACTIVE_HIGH>; + model = "wm5110"; + samsung,audio-routing = + /* Headphone */ + "HP", "HPOUT1L", + "HP", "HPOUT1R", + + /* Speaker */ + "SPK", "SPKOUT", + "SPKOUT", "HPOUT2L", + "SPKOUT", "HPOUT2R", + + /* Receiver */ + "RCV", "HPOUT3L", + "RCV", "HPOUT3R"; + status = "okay"; + }; +}; + +&adc { + vdd-supply = <&ldo3_reg>; + status = "okay"; + + thermistor-ap { + compatible = "murata,ncp03wf104"; + pullup-uv = <1800000>; + pullup-ohm = <100000>; + pulldown-ohm = <0>; + io-channels = <&adc 0>; + }; + + thermistor-battery { + compatible = "murata,ncp03wf104"; + pullup-uv = <1800000>; + pullup-ohm = <100000>; + pulldown-ohm = <0>; + io-channels = <&adc 1>; + #thermal-sensor-cells = <0>; + }; + + thermistor-charger { + compatible = "murata,ncp03wf104"; + pullup-uv = <1800000>; + pullup-ohm = <100000>; + pulldown-ohm = <0>; + io-channels = <&adc 2>; + }; +}; + +&bus_g2d_400 { + devfreq-events = <&ppmu_event0_d0_general>, <&ppmu_event0_d1_general>; + vdd-supply = <&buck4_reg>; + exynos,saturation-ratio = <10>; + status = "okay"; +}; + +&bus_g2d_266 { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_gscl { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_hevc { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_jpeg { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_mfc { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_mscl { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_noc0 { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_noc1 { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&bus_noc2 { + devfreq = <&bus_g2d_400>; + status = "okay"; +}; + +&cmu_aud { + assigned-clocks = <&cmu_aud CLK_MOUT_AUD_PLL_USER>; + assigned-clock-parents = <&cmu_top CLK_FOUT_AUD_PLL>; +}; + +&cmu_fsys { + assigned-clocks = <&cmu_top CLK_MOUT_SCLK_USBDRD30>, + <&cmu_top CLK_MOUT_SCLK_USBHOST30>, + <&cmu_fsys CLK_MOUT_SCLK_USBDRD30_USER>, + <&cmu_fsys CLK_MOUT_SCLK_USBHOST30_USER>, + <&cmu_fsys CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_USER>, + <&cmu_fsys CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_USER>, + <&cmu_fsys CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_USER>, + <&cmu_fsys CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_USER>, + <&cmu_top CLK_DIV_SCLK_USBDRD30>, + <&cmu_top CLK_DIV_SCLK_USBHOST30>; + assigned-clock-parents = <&cmu_top CLK_MOUT_BUS_PLL_USER>, + <&cmu_top CLK_MOUT_BUS_PLL_USER>, + <&cmu_top CLK_SCLK_USBDRD30_FSYS>, + <&cmu_top CLK_SCLK_USBHOST30_FSYS>, + <&cmu_fsys CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_PHY>, + <&cmu_fsys CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_PHY>, + <&cmu_fsys CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_PHY>, + <&cmu_fsys CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_PHY>; + assigned-clock-rates = <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, + <66700000>, <66700000>; +}; + +&cmu_gscl { + assigned-clocks = <&cmu_gscl CLK_MOUT_ACLK_GSCL_111_USER>, + <&cmu_gscl CLK_MOUT_ACLK_GSCL_333_USER>; + assigned-clock-parents = <&cmu_top CLK_ACLK_GSCL_111>, + <&cmu_top CLK_ACLK_GSCL_333>; +}; + +&cmu_mfc { + assigned-clocks = <&cmu_mfc CLK_MOUT_ACLK_MFC_400_USER>; + assigned-clock-parents = <&cmu_top CLK_ACLK_MFC_400>; +}; + +&cmu_mscl { + assigned-clocks = <&cmu_mscl CLK_MOUT_ACLK_MSCL_400_USER>, + <&cmu_mscl CLK_MOUT_SCLK_JPEG_USER>, + <&cmu_mscl CLK_MOUT_SCLK_JPEG>, + <&cmu_top CLK_MOUT_SCLK_JPEG_A>; + assigned-clock-parents = <&cmu_top CLK_ACLK_MSCL_400>, + <&cmu_top CLK_SCLK_JPEG_MSCL>, + <&cmu_mscl CLK_MOUT_SCLK_JPEG_USER>, + <&cmu_top CLK_MOUT_BUS_PLL_USER>; +}; + +&cpu0 { + cpu-supply = <&buck3_reg>; +}; + +&cpu4 { + cpu-supply = <&buck2_reg>; +}; + +&decon { + status = "okay"; + + i80-if-timings { + }; +}; + +&dsi { + status = "okay"; + vddcore-supply = <&ldo6_reg>; + vddio-supply = <&ldo7_reg>; + samsung,pll-clock-frequency = <24000000>; + pinctrl-names = "default"; + pinctrl-0 = <&te_irq>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@1 { + reg = <1>; + + dsi_out: endpoint { + samsung,burst-clock-frequency = <512000000>; + samsung,esc-clock-frequency = <16000000>; + }; + }; + }; +}; + +&hsi2c_0 { + status = "okay"; + clock-frequency = <2500000>; + + s2mps13-pmic@66 { + compatible = "samsung,s2mps13-pmic"; + interrupt-parent = <&gpa0>; + interrupts = <7 IRQ_TYPE_NONE>; + reg = <0x66>; + samsung,s2mps11-wrstbi-ground; + + s2mps13_osc: clocks { + compatible = "samsung,s2mps13-clk"; + #clock-cells = <1>; + clock-output-names = "s2mps13_ap", "s2mps13_cp", + "s2mps13_bt"; + }; + + regulators { + ldo1_reg: LDO1 { + regulator-name = "VDD_ALIVE_0.9V_AP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + regulator-always-on; + }; + + ldo2_reg: LDO2 { + regulator-name = "VDDQ_MMC2_2.8V_AP"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo3_reg: LDO3 { + regulator-name = "VDD1_E_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + ldo4_reg: LDO4 { + regulator-name = "VDD10_MIF_PLL_1.0V_AP"; + regulator-min-microvolt = <1300000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo5_reg: LDO5 { + regulator-name = "VDD10_DPLL_1.0V_AP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo6_reg: LDO6 { + regulator-name = "VDD10_MIPI2L_1.0V_AP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo7_reg: LDO7 { + regulator-name = "VDD18_MIPI2L_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo8_reg: LDO8 { + regulator-name = "VDD18_LLI_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo9_reg: LDO9 { + regulator-name = "VDD18_ABB_ETC_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo10_reg: LDO10 { + regulator-name = "VDD33_USB30_3.0V_AP"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo11_reg: LDO11 { + regulator-name = "VDD_INT_M_1.0V_AP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo12_reg: LDO12 { + regulator-name = "VDD_KFC_M_1.1V_AP"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1350000>; + regulator-always-on; + }; + + ldo13_reg: LDO13 { + regulator-name = "VDD_G3D_M_0.95V_AP"; + regulator-min-microvolt = <950000>; + regulator-max-microvolt = <950000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo14_reg: LDO14 { + regulator-name = "VDDQ_M1_LDO_1.2V_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo15_reg: LDO15 { + regulator-name = "VDDQ_M2_LDO_1.2V_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + ldo16_reg: LDO16 { + regulator-name = "VDDQ_EFUSE"; + regulator-min-microvolt = <1400000>; + regulator-max-microvolt = <3400000>; + regulator-always-on; + }; + + ldo17_reg: LDO17 { + regulator-name = "V_TFLASH_2.8V_AP"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + ldo18_reg: LDO18 { + regulator-name = "V_CODEC_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo19_reg: LDO19 { + regulator-name = "VDDA_1.8V_COMP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + + ldo20_reg: LDO20 { + regulator-name = "VCC_2.8V_AP"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-always-on; + }; + + ldo21_reg: LDO21 { + regulator-name = "VT_CAM_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo22_reg: LDO22 { + regulator-name = "CAM_IO_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo23_reg: LDO23 { + regulator-name = "CAM_SEN_CORE_1.2V_AP"; + regulator-min-microvolt = <1050000>; + regulator-max-microvolt = <1200000>; + }; + + ldo24_reg: LDO24 { + regulator-name = "VT_CAM_1.2V"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + }; + + ldo25_reg: LDO25 { + regulator-name = "CAM_SEN_A2.8V_AP"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + ldo26_reg: LDO26 { + regulator-name = "CAM_AF_2.8V_AP"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + + ldo27_reg: LDO27 { + regulator-name = "VCC_3.0V_LCD_AP"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo28_reg: LDO28 { + regulator-name = "VCC_1.8V_LCD_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo29_reg: LDO29 { + regulator-name = "VT_CAM_2.8V"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo30_reg: LDO30 { + regulator-name = "TSP_AVDD_3.3V_AP"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + ldo31_reg: LDO31 { + regulator-name = "TSP_VDD_1.85V_AP"; + regulator-min-microvolt = <1850000>; + regulator-max-microvolt = <1850000>; + }; + + ldo32_reg: LDO32 { + regulator-name = "VTOUCH_1.8V_AP"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo33_reg: LDO33 { + regulator-name = "VTOUCH_LED_3.3V"; + regulator-min-microvolt = <2500000>; + regulator-max-microvolt = <3300000>; + regulator-ramp-delay = <12500>; + }; + + ldo34_reg: LDO34 { + regulator-name = "VCC_1.8V_MHL_AP"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <2100000>; + }; + + ldo35_reg: LDO35 { + regulator-name = "OIS_VM_2.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2800000>; + }; + + ldo36_reg: LDO36 { + regulator-name = "VSIL_1.0V"; + regulator-min-microvolt = <1000000>; + regulator-max-microvolt = <1000000>; + }; + + ldo37_reg: LDO37 { + regulator-name = "VF_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo38_reg: LDO38 { + regulator-name = "VCC_3.0V_MOTOR_AP"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + }; + + ldo39_reg: LDO39 { + regulator-name = "V_HRM_1.8V"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + ldo40_reg: LDO40 { + regulator-name = "V_HRM_3.3V"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + buck1_reg: BUCK1 { + regulator-name = "VDD_MIF_0.9V_AP"; + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck2_reg: BUCK2 { + regulator-name = "VDD_EGL_1.0V_AP"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <1300000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck3_reg: BUCK3 { + regulator-name = "VDD_KFC_1.0V_AP"; + regulator-min-microvolt = <800000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck4_reg: BUCK4 { + regulator-name = "VDD_INT_0.95V_AP"; + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck5_reg: BUCK5 { + regulator-name = "VDD_DISP_CAM0_0.9V_AP"; + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck6_reg: BUCK6 { + regulator-name = "VDD_G3D_0.9V_AP"; + regulator-min-microvolt = <600000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + regulator-state-mem { + regulator-off-in-suspend; + }; + }; + + buck7_reg: BUCK7 { + regulator-name = "VDD_MEM1_1.2V_AP"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-always-on; + }; + + buck8_reg: BUCK8 { + regulator-name = "VDD_LLDO_1.35V_AP"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + buck9_reg: BUCK9 { + regulator-name = "VDD_MLDO_2.0V_AP"; + regulator-min-microvolt = <1350000>; + regulator-max-microvolt = <3300000>; + regulator-always-on; + }; + + buck10_reg: BUCK10 { + regulator-name = "vdd_mem2"; + regulator-min-microvolt = <550000>; + regulator-max-microvolt = <1500000>; + regulator-always-on; + }; + }; + }; +}; + +&hsi2c_8 { + status = "okay"; + + max77843@66 { + compatible = "maxim,max77843"; + interrupt-parent = <&gpa1>; + interrupts = <5 IRQ_TYPE_EDGE_FALLING>; + reg = <0x66>; + + muic: max77843-muic { + compatible = "maxim,max77843-muic"; + }; + + regulators { + compatible = "maxim,max77843-regulator"; + safeout1_reg: SAFEOUT1 { + regulator-name = "SAFEOUT1"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <4950000>; + }; + + safeout2_reg: SAFEOUT2 { + regulator-name = "SAFEOUT2"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <4950000>; + }; + + charger_reg: CHARGER { + regulator-name = "CHARGER"; + regulator-min-microamp = <100000>; + regulator-max-microamp = <3150000>; + }; + }; + + haptic: max77843-haptic { + compatible = "maxim,max77843-haptic"; + haptic-supply = <&ldo38_reg>; + pwms = <&pwm 0 33670 0>; + pwm-names = "haptic"; + }; + }; +}; + +&i2s0 { + status = "okay"; +}; + +&mshc_0 { + status = "okay"; + num-slots = <1>; + mmc-hs200-1_8v; + mmc-hs400-1_8v; + cap-mmc-highspeed; + non-removable; + card-detect-delay = <200>; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <0 4>; + samsung,dw-mshc-ddr-timing = <0 2>; + samsung,dw-mshc-hs400-timing = <0 3>; + samsung,read-strobe-delay = <90>; + fifo-depth = <0x80>; + pinctrl-names = "default"; + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_qrdy &sd0_bus1 &sd0_bus4 + &sd0_bus8 &sd0_rdqs>; + bus-width = <8>; + assigned-clocks = <&cmu_top CLK_SCLK_MMC0_FSYS>; + assigned-clock-rates = <800000000>; +}; + +&mshc_2 { + status = "okay"; + num-slots = <1>; + cap-sd-highspeed; + disable-wp; + cd-gpios = <&gpa2 4 GPIO_ACTIVE_HIGH>; + cd-inverted; + card-detect-delay = <200>; + samsung,dw-mshc-ciu-div = <3>; + samsung,dw-mshc-sdr-timing = <0 4>; + samsung,dw-mshc-ddr-timing = <0 2>; + fifo-depth = <0x80>; + pinctrl-names = "default"; + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4>; + bus-width = <4>; +}; + +&ppmu_d0_general { + status = "okay"; + events { + ppmu_event0_d0_general: ppmu-event0-d0-general { + event-name = "ppmu-event0-d0-general"; + }; + }; +}; + +&ppmu_d1_general { + status = "okay"; + events { + ppmu_event0_d1_general: ppmu-event0-d1-general { + event-name = "ppmu-event0-d1-general"; + }; + }; +}; + +&pinctrl_alive { + pinctrl-names = "default"; + pinctrl-0 = <&initial_alive>; + + initial_alive: initial-state { + PIN(IN, gpa0-0, DOWN, LV1); + PIN(IN, gpa0-1, NONE, LV1); + PIN(IN, gpa0-2, DOWN, LV1); + PIN(IN, gpa0-3, NONE, LV1); + PIN(IN, gpa0-4, NONE, LV1); + PIN(IN, gpa0-5, DOWN, LV1); + PIN(IN, gpa0-6, NONE, LV1); + PIN(IN, gpa0-7, NONE, LV1); + + PIN(IN, gpa1-0, UP, LV1); + PIN(IN, gpa1-1, NONE, LV1); + PIN(IN, gpa1-2, NONE, LV1); + PIN(IN, gpa1-3, DOWN, LV1); + PIN(IN, gpa1-4, DOWN, LV1); + PIN(IN, gpa1-5, NONE, LV1); + PIN(IN, gpa1-6, NONE, LV1); + PIN(IN, gpa1-7, NONE, LV1); + + PIN(IN, gpa2-0, NONE, LV1); + PIN(IN, gpa2-1, NONE, LV1); + PIN(IN, gpa2-2, NONE, LV1); + PIN(IN, gpa2-3, DOWN, LV1); + PIN(IN, gpa2-4, NONE, LV1); + PIN(IN, gpa2-5, DOWN, LV1); + PIN(IN, gpa2-6, DOWN, LV1); + PIN(IN, gpa2-7, NONE, LV1); + + PIN(IN, gpa3-0, DOWN, LV1); + PIN(IN, gpa3-1, DOWN, LV1); + PIN(IN, gpa3-2, NONE, LV1); + PIN(IN, gpa3-3, DOWN, LV1); + PIN(IN, gpa3-4, NONE, LV1); + PIN(IN, gpa3-5, DOWN, LV1); + PIN(IN, gpa3-6, DOWN, LV1); + PIN(IN, gpa3-7, DOWN, LV1); + + PIN(IN, gpf1-0, NONE, LV1); + PIN(IN, gpf1-1, NONE, LV1); + PIN(IN, gpf1-2, DOWN, LV1); + PIN(IN, gpf1-4, UP, LV1); + PIN(OUT, gpf1-5, NONE, LV1); + PIN(IN, gpf1-6, DOWN, LV1); + PIN(IN, gpf1-7, DOWN, LV1); + + PIN(IN, gpf2-0, DOWN, LV1); + PIN(IN, gpf2-1, DOWN, LV1); + PIN(IN, gpf2-2, DOWN, LV1); + PIN(IN, gpf2-3, DOWN, LV1); + + PIN(IN, gpf3-0, DOWN, LV1); + PIN(IN, gpf3-1, DOWN, LV1); + PIN(IN, gpf3-2, NONE, LV1); + PIN(IN, gpf3-3, DOWN, LV1); + + PIN(IN, gpf4-0, DOWN, LV1); + PIN(IN, gpf4-1, DOWN, LV1); + PIN(IN, gpf4-2, DOWN, LV1); + PIN(IN, gpf4-3, DOWN, LV1); + PIN(IN, gpf4-4, DOWN, LV1); + PIN(IN, gpf4-5, DOWN, LV1); + PIN(IN, gpf4-6, DOWN, LV1); + PIN(IN, gpf4-7, DOWN, LV1); + + PIN(IN, gpf5-0, DOWN, LV1); + PIN(IN, gpf5-1, DOWN, LV1); + PIN(IN, gpf5-2, DOWN, LV1); + PIN(IN, gpf5-3, DOWN, LV1); + PIN(OUT, gpf5-4, NONE, LV1); + PIN(IN, gpf5-5, DOWN, LV1); + PIN(IN, gpf5-6, DOWN, LV1); + PIN(IN, gpf5-7, DOWN, LV1); + }; + + te_irq: te_irq { + samsung,pins = "gpf1-3"; + samsung,pin-function = <0xf>; + }; +}; + +&pinctrl_cpif { + pinctrl-names = "default"; + pinctrl-0 = <&initial_cpif>; + + initial_cpif: initial-state { + PIN(IN, gpv6-0, DOWN, LV1); + PIN(IN, gpv6-1, DOWN, LV1); + }; +}; + +&pinctrl_ese { + pinctrl-names = "default"; + pinctrl-0 = <&initial_ese>; + + initial_ese: initial-state { + PIN(IN, gpj2-0, DOWN, LV1); + PIN(IN, gpj2-1, DOWN, LV1); + PIN(IN, gpj2-2, DOWN, LV1); + }; +}; + +&pinctrl_fsys { + pinctrl-names = "default"; + pinctrl-0 = <&initial_fsys>; + + initial_fsys: initial-state { + PIN(IN, gpr3-0, NONE, LV1); + PIN(IN, gpr3-1, DOWN, LV1); + PIN(IN, gpr3-2, DOWN, LV1); + PIN(IN, gpr3-3, DOWN, LV1); + PIN(IN, gpr3-7, NONE, LV1); + }; +}; + +&pinctrl_imem { + pinctrl-names = "default"; + pinctrl-0 = <&initial_imem>; + + initial_imem: initial-state { + PIN(IN, gpf0-0, UP, LV1); + PIN(IN, gpf0-1, UP, LV1); + PIN(IN, gpf0-2, DOWN, LV1); + PIN(IN, gpf0-3, UP, LV1); + PIN(IN, gpf0-4, DOWN, LV1); + PIN(IN, gpf0-5, NONE, LV1); + PIN(IN, gpf0-6, DOWN, LV1); + PIN(IN, gpf0-7, UP, LV1); + }; +}; + +&pinctrl_nfc { + pinctrl-names = "default"; + pinctrl-0 = <&initial_nfc>; + + initial_nfc: initial-state { + PIN(IN, gpj0-2, DOWN, LV1); + }; +}; + +&pinctrl_peric { + pinctrl-names = "default"; + pinctrl-0 = <&initial_peric>; + + initial_peric: initial-state { + PIN(IN, gpv7-0, DOWN, LV1); + PIN(IN, gpv7-1, DOWN, LV1); + PIN(IN, gpv7-2, NONE, LV1); + PIN(IN, gpv7-3, DOWN, LV1); + PIN(IN, gpv7-4, DOWN, LV1); + PIN(IN, gpv7-5, DOWN, LV1); + + PIN(IN, gpb0-4, DOWN, LV1); + + PIN(IN, gpc0-2, DOWN, LV1); + PIN(IN, gpc0-5, DOWN, LV1); + PIN(IN, gpc0-7, DOWN, LV1); + + PIN(IN, gpc1-1, DOWN, LV1); + + PIN(IN, gpc3-4, NONE, LV1); + PIN(IN, gpc3-5, NONE, LV1); + PIN(IN, gpc3-6, NONE, LV1); + PIN(IN, gpc3-7, NONE, LV1); + + PIN(OUT, gpg0-0, NONE, LV1); + PIN(FUNC1, gpg0-1, DOWN, LV1); + + PIN(IN, gpd2-5, DOWN, LV1); + + PIN(IN, gpd4-0, NONE, LV1); + PIN(IN, gpd4-1, DOWN, LV1); + PIN(IN, gpd4-2, DOWN, LV1); + PIN(IN, gpd4-3, DOWN, LV1); + PIN(IN, gpd4-4, DOWN, LV1); + + PIN(IN, gpd6-3, DOWN, LV1); + + PIN(IN, gpd8-1, UP, LV1); + + PIN(IN, gpg1-0, DOWN, LV1); + PIN(IN, gpg1-1, DOWN, LV1); + PIN(IN, gpg1-2, DOWN, LV1); + PIN(IN, gpg1-3, DOWN, LV1); + PIN(IN, gpg1-4, DOWN, LV1); + + PIN(IN, gpg2-0, DOWN, LV1); + PIN(IN, gpg2-1, DOWN, LV1); + + PIN(IN, gpg3-0, DOWN, LV1); + PIN(IN, gpg3-1, DOWN, LV1); + PIN(IN, gpg3-5, DOWN, LV1); + PIN(IN, gpg3-7, DOWN, LV1); + }; +}; + +&pinctrl_touch { + pinctrl-names = "default"; + pinctrl-0 = <&initial_touch>; + + initial_touch: initial-state { + PIN(IN, gpj1-2, DOWN, LV1); + }; +}; + +&pwm { + pinctrl-0 = <&pwm0_out>; + pinctrl-names = "default"; + status = "okay"; +}; + +&mic { + status = "okay"; + + i80-if-timings { + }; +}; + +&pmu_system_controller { + assigned-clocks = <&pmu_system_controller 0>; + assigned-clock-parents = <&xxti>; +}; + +&serial_1 { + status = "okay"; +}; + +&spi_1 { + cs-gpios = <&gpd6 3 GPIO_ACTIVE_HIGH>; + status = "okay"; + + wm5110: wm5110-codec@0 { + compatible = "wlf,wm5110"; + reg = <0x0>; + spi-max-frequency = <20000000>; + interrupt-parent = <&gpa0>; + interrupts = <4 IRQ_TYPE_NONE>; + clocks = <&pmu_system_controller 0>, + <&s2mps13_osc S2MPS11_CLK_BT>; + clock-names = "mclk1", "mclk2"; + + gpio-controller; + #gpio-cells = <2>; + + wlf,micd-detect-debounce = <300>; + wlf,micd-bias-start-time = <0x1>; + wlf,micd-rate = <0x7>; + wlf,micd-dbtime = <0x1>; + wlf,micd-force-micbias; + wlf,micd-configs = <0x0 1 0>; + wlf,hpdet-channel = <1>; + wlf,gpsw = <0x1>; + wlf,inmode = <2 0 2 0>; + + wlf,reset = <&gpc0 7 GPIO_ACTIVE_HIGH>; + wlf,ldoena = <&gpf0 0 GPIO_ACTIVE_HIGH>; + + /* core supplies */ + AVDD-supply = <&ldo18_reg>; + DBVDD1-supply = <&ldo18_reg>; + CPVDD-supply = <&ldo18_reg>; + DBVDD2-supply = <&ldo18_reg>; + DBVDD3-supply = <&ldo18_reg>; + + controller-data { + samsung,spi-feedback-delay = <0>; + }; + }; +}; + +&timer { + clock-frequency = <24000000>; +}; + +&tmu_atlas0 { + vtmu-supply = <&ldo3_reg>; + status = "okay"; +}; + +&tmu_apollo { + vtmu-supply = <&ldo3_reg>; + status = "okay"; +}; + +&tmu_g3d { + vtmu-supply = <&ldo3_reg>; + status = "okay"; +}; + +&usbdrd30 { + vdd33-supply = <&ldo10_reg>; + vdd10-supply = <&ldo6_reg>; + status = "okay"; +}; + +&usbdrd_dwc3_0 { + dr_mode = "otg"; +}; + +&usbdrd30_phy { + vbus-supply = <&safeout1_reg>; + status = "okay"; +}; + +&xxti { + clock-frequency = <24000000>; +}; diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts dissimilarity index 98% index 4e6619c..aa8584a 100644 --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts @@ -1,1119 +1,19 @@ -/* - * SAMSUNG Exynos5433 TM2 board device tree source - * - * Copyright (c) 2016 Samsung Electronics Co., Ltd. - * - * Device tree source file for Samsung's TM2 board which is based on - * Samsung Exynos5433 SoC. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 as - * published by the Free Software Foundation. - */ - -/dts-v1/; -#include "exynos5433.dtsi" -#include <dt-bindings/clock/samsung,s2mps11.h> -#include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/input/input.h> -#include <dt-bindings/interrupt-controller/irq.h> - -/ { - model = "Samsung TM2 board"; - compatible = "samsung,tm2", "samsung,exynos5433"; - - aliases { - gsc0 = &gsc_0; - gsc1 = &gsc_1; - gsc2 = &gsc_2; - pinctrl0 = &pinctrl_alive; - pinctrl1 = &pinctrl_aud; - pinctrl2 = &pinctrl_cpif; - pinctrl3 = &pinctrl_ese; - pinctrl4 = &pinctrl_finger; - pinctrl5 = &pinctrl_fsys; - pinctrl6 = &pinctrl_imem; - pinctrl7 = &pinctrl_nfc; - pinctrl8 = &pinctrl_peric; - pinctrl9 = &pinctrl_touch; - serial0 = &serial_0; - serial1 = &serial_1; - serial2 = &serial_2; - serial3 = &serial_3; - spi0 = &spi_0; - spi1 = &spi_1; - spi2 = &spi_2; - spi3 = &spi_3; - spi4 = &spi_4; - mshc0 = &mshc_0; - mshc2 = &mshc_2; - }; - - chosen { - stdout-path = &serial_1; - }; - - memory@20000000 { - device_type = "memory"; - reg = <0x0 0x20000000 0x0 0xc0000000>; - }; - - gpio-keys { - compatible = "gpio-keys"; - - power-key { - gpios = <&gpa2 7 GPIO_ACTIVE_LOW>; - linux,code = <KEY_POWER>; - label = "power key"; - debounce-interval = <10>; - }; - - volume-up-key { - gpios = <&gpa2 0 GPIO_ACTIVE_LOW>; - linux,code = <KEY_VOLUMEUP>; - label = "volume-up key"; - debounce-interval = <10>; - }; - - volume-down-key { - gpios = <&gpa2 1 GPIO_ACTIVE_LOW>; - linux,code = <KEY_VOLUMEDOWN>; - label = "volume-down key"; - debounce-interval = <10>; - }; - - homepage-key { - gpios = <&gpa0 3 GPIO_ACTIVE_LOW>; - linux,code = <KEY_MENU>; - label = "homepage key"; - debounce-interval = <10>; - }; - }; - - i2c_max98504: i2c-gpio-0 { - compatible = "i2c-gpio"; - gpios = <&gpd0 1 GPIO_ACTIVE_HIGH /* SPK_AMP_SDA */ - &gpd0 0 GPIO_ACTIVE_HIGH /* SPK_AMP_SCL */ >; - i2c-gpio,delay-us = <2>; - #address-cells = <1>; - #size-cells = <0>; - status = "okay"; - - max98504: max98504@31 { - compatible = "maxim,max98504"; - reg = <0x31>; - maxim,rx-path = <1>; - maxim,tx-path = <1>; - maxim,tx-channel-mask = <3>; - maxim,tx-channel-source = <2>; - }; - }; - - sound { - compatible = "samsung,tm2-audio"; - audio-codec = <&wm5110>; - i2s-controller = <&i2s0>; - audio-amplifier = <&max98504>; - mic-bias-gpios = <&gpr3 2 GPIO_ACTIVE_HIGH>; - model = "wm5110"; - samsung,audio-routing = - /* Headphone */ - "HP", "HPOUT1L", - "HP", "HPOUT1R", - - /* Speaker */ - "SPK", "SPKOUT", - "SPKOUT", "HPOUT2L", - "SPKOUT", "HPOUT2R", - - /* Receiver */ - "RCV", "HPOUT3L", - "RCV", "HPOUT3R"; - status = "okay"; - }; -}; - -&adc { - vdd-supply = <&ldo3_reg>; - status = "okay"; - - thermistor-ap { - compatible = "murata,ncp03wf104"; - pullup-uv = <1800000>; - pullup-ohm = <100000>; - pulldown-ohm = <0>; - io-channels = <&adc 0>; - }; - - thermistor-battery { - compatible = "murata,ncp03wf104"; - pullup-uv = <1800000>; - pullup-ohm = <100000>; - pulldown-ohm = <0>; - io-channels = <&adc 1>; - #thermal-sensor-cells = <0>; - }; - - thermistor-charger { - compatible = "murata,ncp03wf104"; - pullup-uv = <1800000>; - pullup-ohm = <100000>; - pulldown-ohm = <0>; - io-channels = <&adc 2>; - }; -}; - -&bus_g2d_400 { - devfreq-events = <&ppmu_event0_d0_general>, <&ppmu_event0_d1_general>; - vdd-supply = <&buck4_reg>; - exynos,saturation-ratio = <10>; - status = "okay"; -}; - -&bus_g2d_266 { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_gscl { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_hevc { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_jpeg { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_mfc { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_mscl { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_noc0 { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_noc1 { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&bus_noc2 { - devfreq = <&bus_g2d_400>; - status = "okay"; -}; - -&cmu_aud { - assigned-clocks = <&cmu_aud CLK_MOUT_AUD_PLL_USER>; - assigned-clock-parents = <&cmu_top CLK_FOUT_AUD_PLL>; -}; - -&cmu_fsys { - assigned-clocks = <&cmu_top CLK_MOUT_SCLK_USBDRD30>, - <&cmu_top CLK_MOUT_SCLK_USBHOST30>, - <&cmu_fsys CLK_MOUT_SCLK_USBDRD30_USER>, - <&cmu_fsys CLK_MOUT_SCLK_USBHOST30_USER>, - <&cmu_fsys CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_USER>, - <&cmu_fsys CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_USER>, - <&cmu_fsys CLK_MOUT_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_USER>, - <&cmu_fsys CLK_MOUT_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_USER>, - <&cmu_top CLK_DIV_SCLK_USBDRD30>, - <&cmu_top CLK_DIV_SCLK_USBHOST30>; - assigned-clock-parents = <&cmu_top CLK_MOUT_BUS_PLL_USER>, - <&cmu_top CLK_MOUT_BUS_PLL_USER>, - <&cmu_top CLK_SCLK_USBDRD30_FSYS>, - <&cmu_top CLK_SCLK_USBHOST30_FSYS>, - <&cmu_fsys CLK_PHYCLK_USBDRD30_UDRD30_PIPE_PCLK_PHY>, - <&cmu_fsys CLK_PHYCLK_USBHOST30_UHOST30_PIPE_PCLK_PHY>, - <&cmu_fsys CLK_PHYCLK_USBDRD30_UDRD30_PHYCLOCK_PHY>, - <&cmu_fsys CLK_PHYCLK_USBHOST30_UHOST30_PHYCLOCK_PHY>; - assigned-clock-rates = <0>, <0>, <0>, <0>, <0>, <0>, <0>, <0>, - <66700000>, <66700000>; -}; - -&cmu_gscl { - assigned-clocks = <&cmu_gscl CLK_MOUT_ACLK_GSCL_111_USER>, - <&cmu_gscl CLK_MOUT_ACLK_GSCL_333_USER>; - assigned-clock-parents = <&cmu_top CLK_ACLK_GSCL_111>, - <&cmu_top CLK_ACLK_GSCL_333>; -}; - -&cmu_mfc { - assigned-clocks = <&cmu_mfc CLK_MOUT_ACLK_MFC_400_USER>; - assigned-clock-parents = <&cmu_top CLK_ACLK_MFC_400>; -}; - -&cmu_mscl { - assigned-clocks = <&cmu_mscl CLK_MOUT_ACLK_MSCL_400_USER>, - <&cmu_mscl CLK_MOUT_SCLK_JPEG_USER>, - <&cmu_mscl CLK_MOUT_SCLK_JPEG>, - <&cmu_top CLK_MOUT_SCLK_JPEG_A>; - assigned-clock-parents = <&cmu_top CLK_ACLK_MSCL_400>, - <&cmu_top CLK_SCLK_JPEG_MSCL>, - <&cmu_mscl CLK_MOUT_SCLK_JPEG_USER>, - <&cmu_top CLK_MOUT_BUS_PLL_USER>; -}; - -&cpu0 { - cpu-supply = <&buck3_reg>; -}; - -&cpu4 { - cpu-supply = <&buck2_reg>; -}; - -&decon { - status = "okay"; - - i80-if-timings { - }; -}; - -&dsi { - status = "okay"; - vddcore-supply = <&ldo6_reg>; - vddio-supply = <&ldo7_reg>; - samsung,pll-clock-frequency = <24000000>; - pinctrl-names = "default"; - pinctrl-0 = <&te_irq>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@1 { - reg = <1>; - - dsi_out: endpoint { - samsung,burst-clock-frequency = <512000000>; - samsung,esc-clock-frequency = <16000000>; - }; - }; - }; -}; - -&hsi2c_0 { - status = "okay"; - clock-frequency = <2500000>; - - s2mps13-pmic@66 { - compatible = "samsung,s2mps13-pmic"; - interrupt-parent = <&gpa0>; - interrupts = <7 IRQ_TYPE_NONE>; - reg = <0x66>; - samsung,s2mps11-wrstbi-ground; - - s2mps13_osc: clocks { - compatible = "samsung,s2mps13-clk"; - #clock-cells = <1>; - clock-output-names = "s2mps13_ap", "s2mps13_cp", - "s2mps13_bt"; - }; - - regulators { - ldo1_reg: LDO1 { - regulator-name = "VDD_ALIVE_0.9V_AP"; - regulator-min-microvolt = <900000>; - regulator-max-microvolt = <900000>; - regulator-always-on; - }; - - ldo2_reg: LDO2 { - regulator-name = "VDDQ_MMC2_2.8V_AP"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo3_reg: LDO3 { - regulator-name = "VDD1_E_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - }; - - ldo4_reg: LDO4 { - regulator-name = "VDD10_MIF_PLL_1.0V_AP"; - regulator-min-microvolt = <1300000>; - regulator-max-microvolt = <1300000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo5_reg: LDO5 { - regulator-name = "VDD10_DPLL_1.0V_AP"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo6_reg: LDO6 { - regulator-name = "VDD10_MIPI2L_1.0V_AP"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo7_reg: LDO7 { - regulator-name = "VDD18_MIPI2L_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo8_reg: LDO8 { - regulator-name = "VDD18_LLI_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo9_reg: LDO9 { - regulator-name = "VDD18_ABB_ETC_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo10_reg: LDO10 { - regulator-name = "VDD33_USB30_3.0V_AP"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo11_reg: LDO11 { - regulator-name = "VDD_INT_M_1.0V_AP"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo12_reg: LDO12 { - regulator-name = "VDD_KFC_M_1.1V_AP"; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <1350000>; - regulator-always-on; - }; - - ldo13_reg: LDO13 { - regulator-name = "VDD_G3D_M_0.95V_AP"; - regulator-min-microvolt = <950000>; - regulator-max-microvolt = <950000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo14_reg: LDO14 { - regulator-name = "VDDQ_M1_LDO_1.2V_AP"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo15_reg: LDO15 { - regulator-name = "VDDQ_M2_LDO_1.2V_AP"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - ldo16_reg: LDO16 { - regulator-name = "VDDQ_EFUSE"; - regulator-min-microvolt = <1400000>; - regulator-max-microvolt = <3400000>; - regulator-always-on; - }; - - ldo17_reg: LDO17 { - regulator-name = "V_TFLASH_2.8V_AP"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - }; - - ldo18_reg: LDO18 { - regulator-name = "V_CODEC_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo19_reg: LDO19 { - regulator-name = "VDDA_1.8V_COMP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - regulator-always-on; - }; - - ldo20_reg: LDO20 { - regulator-name = "VCC_2.8V_AP"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - regulator-always-on; - }; - - ldo21_reg: LDO21 { - regulator-name = "VT_CAM_1.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo22_reg: LDO22 { - regulator-name = "CAM_IO_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo23_reg: LDO23 { - regulator-name = "CAM_SEN_CORE_1.2V_AP"; - regulator-min-microvolt = <1050000>; - regulator-max-microvolt = <1200000>; - }; - - ldo24_reg: LDO24 { - regulator-name = "VT_CAM_1.2V"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - }; - - ldo25_reg: LDO25 { - regulator-name = "CAM_SEN_A2.8V_AP"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - }; - - ldo26_reg: LDO26 { - regulator-name = "CAM_AF_2.8V_AP"; - regulator-min-microvolt = <2800000>; - regulator-max-microvolt = <2800000>; - }; - - ldo27_reg: LDO27 { - regulator-name = "VCC_3.0V_LCD_AP"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - }; - - ldo28_reg: LDO28 { - regulator-name = "VCC_1.8V_LCD_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo29_reg: LDO29 { - regulator-name = "VT_CAM_2.8V"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - }; - - ldo30_reg: LDO30 { - regulator-name = "TSP_AVDD_3.3V_AP"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - }; - - ldo31_reg: LDO31 { - regulator-name = "TSP_VDD_1.85V_AP"; - regulator-min-microvolt = <1850000>; - regulator-max-microvolt = <1850000>; - }; - - ldo32_reg: LDO32 { - regulator-name = "VTOUCH_1.8V_AP"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo33_reg: LDO33 { - regulator-name = "VTOUCH_LED_3.3V"; - regulator-min-microvolt = <2500000>; - regulator-max-microvolt = <3300000>; - regulator-ramp-delay = <12500>; - }; - - ldo34_reg: LDO34 { - regulator-name = "VCC_1.8V_MHL_AP"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <2100000>; - }; - - ldo35_reg: LDO35 { - regulator-name = "OIS_VM_2.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <2800000>; - }; - - ldo36_reg: LDO36 { - regulator-name = "VSIL_1.0V"; - regulator-min-microvolt = <1000000>; - regulator-max-microvolt = <1000000>; - }; - - ldo37_reg: LDO37 { - regulator-name = "VF_1.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo38_reg: LDO38 { - regulator-name = "VCC_3.0V_MOTOR_AP"; - regulator-min-microvolt = <3000000>; - regulator-max-microvolt = <3000000>; - }; - - ldo39_reg: LDO39 { - regulator-name = "V_HRM_1.8V"; - regulator-min-microvolt = <1800000>; - regulator-max-microvolt = <1800000>; - }; - - ldo40_reg: LDO40 { - regulator-name = "V_HRM_3.3V"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <3300000>; - }; - - buck1_reg: BUCK1 { - regulator-name = "VDD_MIF_0.9V_AP"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1500000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck2_reg: BUCK2 { - regulator-name = "VDD_EGL_1.0V_AP"; - regulator-min-microvolt = <900000>; - regulator-max-microvolt = <1300000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck3_reg: BUCK3 { - regulator-name = "VDD_KFC_1.0V_AP"; - regulator-min-microvolt = <800000>; - regulator-max-microvolt = <1200000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck4_reg: BUCK4 { - regulator-name = "VDD_INT_0.95V_AP"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1500000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck5_reg: BUCK5 { - regulator-name = "VDD_DISP_CAM0_0.9V_AP"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1500000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck6_reg: BUCK6 { - regulator-name = "VDD_G3D_0.9V_AP"; - regulator-min-microvolt = <600000>; - regulator-max-microvolt = <1500000>; - regulator-always-on; - regulator-state-mem { - regulator-off-in-suspend; - }; - }; - - buck7_reg: BUCK7 { - regulator-name = "VDD_MEM1_1.2V_AP"; - regulator-min-microvolt = <1200000>; - regulator-max-microvolt = <1200000>; - regulator-always-on; - }; - - buck8_reg: BUCK8 { - regulator-name = "VDD_LLDO_1.35V_AP"; - regulator-min-microvolt = <1350000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - }; - - buck9_reg: BUCK9 { - regulator-name = "VDD_MLDO_2.0V_AP"; - regulator-min-microvolt = <1350000>; - regulator-max-microvolt = <3300000>; - regulator-always-on; - }; - - buck10_reg: BUCK10 { - regulator-name = "vdd_mem2"; - regulator-min-microvolt = <550000>; - regulator-max-microvolt = <1500000>; - regulator-always-on; - }; - }; - }; -}; - -&hsi2c_8 { - status = "okay"; - - max77843@66 { - compatible = "maxim,max77843"; - interrupt-parent = <&gpa1>; - interrupts = <5 IRQ_TYPE_EDGE_FALLING>; - reg = <0x66>; - - muic: max77843-muic { - compatible = "maxim,max77843-muic"; - }; - - regulators { - compatible = "maxim,max77843-regulator"; - safeout1_reg: SAFEOUT1 { - regulator-name = "SAFEOUT1"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <4950000>; - }; - - safeout2_reg: SAFEOUT2 { - regulator-name = "SAFEOUT2"; - regulator-min-microvolt = <3300000>; - regulator-max-microvolt = <4950000>; - }; - - charger_reg: CHARGER { - regulator-name = "CHARGER"; - regulator-min-microamp = <100000>; - regulator-max-microamp = <3150000>; - }; - }; - - haptic: max77843-haptic { - compatible = "maxim,max77843-haptic"; - haptic-supply = <&ldo38_reg>; - pwms = <&pwm 0 33670 0>; - pwm-names = "haptic"; - }; - }; -}; - -&i2s0 { - status = "okay"; -}; - -&mshc_0 { - status = "okay"; - num-slots = <1>; - mmc-hs200-1_8v; - mmc-hs400-1_8v; - cap-mmc-highspeed; - non-removable; - card-detect-delay = <200>; - samsung,dw-mshc-ciu-div = <3>; - samsung,dw-mshc-sdr-timing = <0 4>; - samsung,dw-mshc-ddr-timing = <0 2>; - samsung,dw-mshc-hs400-timing = <0 3>; - samsung,read-strobe-delay = <90>; - fifo-depth = <0x80>; - pinctrl-names = "default"; - pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_qrdy &sd0_bus1 &sd0_bus4 - &sd0_bus8 &sd0_rdqs>; - bus-width = <8>; - assigned-clocks = <&cmu_top CLK_SCLK_MMC0_FSYS>; - assigned-clock-rates = <800000000>; -}; - -&mshc_2 { - status = "okay"; - num-slots = <1>; - cap-sd-highspeed; - disable-wp; - cd-gpios = <&gpa2 4 GPIO_ACTIVE_HIGH>; - cd-inverted; - card-detect-delay = <200>; - samsung,dw-mshc-ciu-div = <3>; - samsung,dw-mshc-sdr-timing = <0 4>; - samsung,dw-mshc-ddr-timing = <0 2>; - fifo-depth = <0x80>; - pinctrl-names = "default"; - pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4>; - bus-width = <4>; -}; - -&ppmu_d0_general { - status = "okay"; - events { - ppmu_event0_d0_general: ppmu-event0-d0-general { - event-name = "ppmu-event0-d0-general"; - }; - }; -}; - -&ppmu_d1_general { - status = "okay"; - events { - ppmu_event0_d1_general: ppmu-event0-d1-general { - event-name = "ppmu-event0-d1-general"; - }; - }; -}; - -&pinctrl_alive { - pinctrl-names = "default"; - pinctrl-0 = <&initial_alive>; - - initial_alive: initial-state { - PIN(IN, gpa0-0, DOWN, LV1); - PIN(IN, gpa0-1, NONE, LV1); - PIN(IN, gpa0-2, DOWN, LV1); - PIN(IN, gpa0-3, NONE, LV1); - PIN(IN, gpa0-4, NONE, LV1); - PIN(IN, gpa0-5, DOWN, LV1); - PIN(IN, gpa0-6, NONE, LV1); - PIN(IN, gpa0-7, NONE, LV1); - - PIN(IN, gpa1-0, UP, LV1); - PIN(IN, gpa1-1, NONE, LV1); - PIN(IN, gpa1-2, NONE, LV1); - PIN(IN, gpa1-3, DOWN, LV1); - PIN(IN, gpa1-4, DOWN, LV1); - PIN(IN, gpa1-5, NONE, LV1); - PIN(IN, gpa1-6, NONE, LV1); - PIN(IN, gpa1-7, NONE, LV1); - - PIN(IN, gpa2-0, NONE, LV1); - PIN(IN, gpa2-1, NONE, LV1); - PIN(IN, gpa2-2, NONE, LV1); - PIN(IN, gpa2-3, DOWN, LV1); - PIN(IN, gpa2-4, NONE, LV1); - PIN(IN, gpa2-5, DOWN, LV1); - PIN(IN, gpa2-6, DOWN, LV1); - PIN(IN, gpa2-7, NONE, LV1); - - PIN(IN, gpa3-0, DOWN, LV1); - PIN(IN, gpa3-1, DOWN, LV1); - PIN(IN, gpa3-2, NONE, LV1); - PIN(IN, gpa3-3, DOWN, LV1); - PIN(IN, gpa3-4, NONE, LV1); - PIN(IN, gpa3-5, DOWN, LV1); - PIN(IN, gpa3-6, DOWN, LV1); - PIN(IN, gpa3-7, DOWN, LV1); - - PIN(IN, gpf1-0, NONE, LV1); - PIN(IN, gpf1-1, NONE, LV1); - PIN(IN, gpf1-2, DOWN, LV1); - PIN(IN, gpf1-4, UP, LV1); - PIN(OUT, gpf1-5, NONE, LV1); - PIN(IN, gpf1-6, DOWN, LV1); - PIN(IN, gpf1-7, DOWN, LV1); - - PIN(IN, gpf2-0, DOWN, LV1); - PIN(IN, gpf2-1, DOWN, LV1); - PIN(IN, gpf2-2, DOWN, LV1); - PIN(IN, gpf2-3, DOWN, LV1); - - PIN(IN, gpf3-0, DOWN, LV1); - PIN(IN, gpf3-1, DOWN, LV1); - PIN(IN, gpf3-2, NONE, LV1); - PIN(IN, gpf3-3, DOWN, LV1); - - PIN(IN, gpf4-0, DOWN, LV1); - PIN(IN, gpf4-1, DOWN, LV1); - PIN(IN, gpf4-2, DOWN, LV1); - PIN(IN, gpf4-3, DOWN, LV1); - PIN(IN, gpf4-4, DOWN, LV1); - PIN(IN, gpf4-5, DOWN, LV1); - PIN(IN, gpf4-6, DOWN, LV1); - PIN(IN, gpf4-7, DOWN, LV1); - - PIN(IN, gpf5-0, DOWN, LV1); - PIN(IN, gpf5-1, DOWN, LV1); - PIN(IN, gpf5-2, DOWN, LV1); - PIN(IN, gpf5-3, DOWN, LV1); - PIN(OUT, gpf5-4, NONE, LV1); - PIN(IN, gpf5-5, DOWN, LV1); - PIN(IN, gpf5-6, DOWN, LV1); - PIN(IN, gpf5-7, DOWN, LV1); - }; - - te_irq: te_irq { - samsung,pins = "gpf1-3"; - samsung,pin-function = <0xf>; - }; -}; - -&pinctrl_cpif { - pinctrl-names = "default"; - pinctrl-0 = <&initial_cpif>; - - initial_cpif: initial-state { - PIN(IN, gpv6-0, DOWN, LV1); - PIN(IN, gpv6-1, DOWN, LV1); - }; -}; - -&pinctrl_ese { - pinctrl-names = "default"; - pinctrl-0 = <&initial_ese>; - - initial_ese: initial-state { - PIN(IN, gpj2-0, DOWN, LV1); - PIN(IN, gpj2-1, DOWN, LV1); - PIN(IN, gpj2-2, DOWN, LV1); - }; -}; - -&pinctrl_fsys { - pinctrl-names = "default"; - pinctrl-0 = <&initial_fsys>; - - initial_fsys: initial-state { - PIN(IN, gpr3-0, NONE, LV1); - PIN(IN, gpr3-1, DOWN, LV1); - PIN(IN, gpr3-2, DOWN, LV1); - PIN(IN, gpr3-3, DOWN, LV1); - PIN(IN, gpr3-7, NONE, LV1); - }; -}; - -&pinctrl_imem { - pinctrl-names = "default"; - pinctrl-0 = <&initial_imem>; - - initial_imem: initial-state { - PIN(IN, gpf0-0, UP, LV1); - PIN(IN, gpf0-1, UP, LV1); - PIN(IN, gpf0-2, DOWN, LV1); - PIN(IN, gpf0-3, UP, LV1); - PIN(IN, gpf0-4, DOWN, LV1); - PIN(IN, gpf0-5, NONE, LV1); - PIN(IN, gpf0-6, DOWN, LV1); - PIN(IN, gpf0-7, UP, LV1); - }; -}; - -&pinctrl_nfc { - pinctrl-names = "default"; - pinctrl-0 = <&initial_nfc>; - - initial_nfc: initial-state { - PIN(IN, gpj0-2, DOWN, LV1); - }; -}; - -&pinctrl_peric { - pinctrl-names = "default"; - pinctrl-0 = <&initial_peric>; - - initial_peric: initial-state { - PIN(IN, gpv7-0, DOWN, LV1); - PIN(IN, gpv7-1, DOWN, LV1); - PIN(IN, gpv7-2, NONE, LV1); - PIN(IN, gpv7-3, DOWN, LV1); - PIN(IN, gpv7-4, DOWN, LV1); - PIN(IN, gpv7-5, DOWN, LV1); - - PIN(IN, gpb0-4, DOWN, LV1); - - PIN(IN, gpc0-2, DOWN, LV1); - PIN(IN, gpc0-5, DOWN, LV1); - PIN(IN, gpc0-7, DOWN, LV1); - - PIN(IN, gpc1-1, DOWN, LV1); - - PIN(IN, gpc3-4, NONE, LV1); - PIN(IN, gpc3-5, NONE, LV1); - PIN(IN, gpc3-6, NONE, LV1); - PIN(IN, gpc3-7, NONE, LV1); - - PIN(OUT, gpg0-0, NONE, LV1); - PIN(FUNC1, gpg0-1, DOWN, LV1); - - PIN(IN, gpd2-5, DOWN, LV1); - - PIN(IN, gpd4-0, NONE, LV1); - PIN(IN, gpd4-1, DOWN, LV1); - PIN(IN, gpd4-2, DOWN, LV1); - PIN(IN, gpd4-3, DOWN, LV1); - PIN(IN, gpd4-4, DOWN, LV1); - - PIN(IN, gpd6-3, DOWN, LV1); - - PIN(IN, gpd8-1, UP, LV1); - - PIN(IN, gpg1-0, DOWN, LV1); - PIN(IN, gpg1-1, DOWN, LV1); - PIN(IN, gpg1-2, DOWN, LV1); - PIN(IN, gpg1-3, DOWN, LV1); - PIN(IN, gpg1-4, DOWN, LV1); - - PIN(IN, gpg2-0, DOWN, LV1); - PIN(IN, gpg2-1, DOWN, LV1); - - PIN(IN, gpg3-0, DOWN, LV1); - PIN(IN, gpg3-1, DOWN, LV1); - PIN(IN, gpg3-5, DOWN, LV1); - PIN(IN, gpg3-7, DOWN, LV1); - }; -}; - -&pinctrl_touch { - pinctrl-names = "default"; - pinctrl-0 = <&initial_touch>; - - initial_touch: initial-state { - PIN(IN, gpj1-2, DOWN, LV1); - }; -}; - -&pwm { - pinctrl-0 = <&pwm0_out>; - pinctrl-names = "default"; - status = "okay"; -}; - -&mic { - status = "okay"; - - i80-if-timings { - }; -}; - -&pmu_system_controller { - assigned-clocks = <&pmu_system_controller 0>; - assigned-clock-parents = <&xxti>; -}; - -&serial_1 { - status = "okay"; -}; - -&spi_1 { - cs-gpios = <&gpd6 3 GPIO_ACTIVE_HIGH>; - status = "okay"; - - wm5110: wm5110-codec@0 { - compatible = "wlf,wm5110"; - reg = <0x0>; - spi-max-frequency = <20000000>; - interrupt-parent = <&gpa0>; - interrupts = <4 IRQ_TYPE_NONE>; - clocks = <&pmu_system_controller 0>, - <&s2mps13_osc S2MPS11_CLK_BT>; - clock-names = "mclk1", "mclk2"; - - gpio-controller; - #gpio-cells = <2>; - - wlf,micd-detect-debounce = <300>; - wlf,micd-bias-start-time = <0x1>; - wlf,micd-rate = <0x7>; - wlf,micd-dbtime = <0x1>; - wlf,micd-force-micbias; - wlf,micd-configs = <0x0 1 0>; - wlf,hpdet-channel = <1>; - wlf,gpsw = <0x1>; - wlf,inmode = <2 0 2 0>; - - wlf,reset = <&gpc0 7 GPIO_ACTIVE_HIGH>; - wlf,ldoena = <&gpf0 0 GPIO_ACTIVE_HIGH>; - - /* core supplies */ - AVDD-supply = <&ldo18_reg>; - DBVDD1-supply = <&ldo18_reg>; - CPVDD-supply = <&ldo18_reg>; - DBVDD2-supply = <&ldo18_reg>; - DBVDD3-supply = <&ldo18_reg>; - - controller-data { - samsung,spi-feedback-delay = <0>; - }; - }; -}; - -&timer { - clock-frequency = <24000000>; -}; - -&tmu_atlas0 { - vtmu-supply = <&ldo3_reg>; - status = "okay"; -}; - -&tmu_apollo { - vtmu-supply = <&ldo3_reg>; - status = "okay"; -}; - -&tmu_g3d { - vtmu-supply = <&ldo3_reg>; - status = "okay"; -}; - -&usbdrd30 { - vdd33-supply = <&ldo10_reg>; - vdd10-supply = <&ldo6_reg>; - status = "okay"; -}; - -&usbdrd_dwc3_0 { - dr_mode = "otg"; -}; - -&usbdrd30_phy { - vbus-supply = <&safeout1_reg>; - status = "okay"; -}; - -&xxti { - clock-frequency = <24000000>; -}; +/* + * SAMSUNG Exynos5433 TM2 board device tree source + * + * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * + * Device tree source file for Samsung's TM2 board which is based on + * Samsung Exynos5433 SoC. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "exynos5433-tm2-common.dtsi" + +/ { + model = "Samsung TM2 board"; + compatible = "samsung,tm2", "samsung,exynos5433"; +}; diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts index 1db4e7f..81fdbef 100644 --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts @@ -11,7 +11,7 @@ * published by the Free Software Foundation. */ -#include "exynos5433-tm2.dts" +#include "exynos5433-tm2-common.dtsi" / { model = "Samsung TM2E board"; -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 8:27 ` [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other Jaechul Lee @ 2017-01-05 9:13 ` Chanwoo Choi 2017-01-05 9:23 ` Andi Shyti 2017-01-05 9:45 ` Chanwoo Choi 0 siblings, 2 replies; 12+ messages in thread From: Chanwoo Choi @ 2017-01-05 9:13 UTC (permalink / raw) To: Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Andi Shyti, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc [-- Attachment #1: Type: text/plain, Size: 19424 bytes --] Hi, I add the some comment as following: - ldo23/25/31/38 have the different value between tm2 and tm2e. - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. [1] https://patchwork.kernel.org/patch/9491769/ - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") I add detailed comments on below. On 2017년 01월 05일 17:27, Jaechul Lee wrote: > From: Andi Shyti <andi.shyti@samsung.com> > > Currently tm2e dts includes tm2 but there are some differences > between the two boards and tm2 has some properties that tm2e > doesn't have. > > That's why it's important to keep the two dts files independent > and put all the commonalities in a tm2-common.dtsi file. > > Signed-off-by: Andi Shyti <andi.shyti@samsung.com> > Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> > --- > .../boot/dts/exynos/exynos5433-tm2-common.dtsi | 1116 +++++++++++++++++++ > arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 1138 +------------------- > arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 2 +- > 3 files changed, 1136 insertions(+), 1120 deletions(-) > create mode 100644 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi > rewrite arch/arm64/boot/dts/exynos/exynos5433-tm2.dts (98%) > > diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi > new file mode 100644 > index 0000000..7ad0019 > --- /dev/null > +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi > @@ -0,0 +1,1116 @@ > +/* > + * SAMSUNG Exynos5433 TM2 board device tree source > + * > + * Copyright (c) 2016 Samsung Electronics Co., Ltd. > + * > + * Device tree source file for Samsung's TM2 board which is based on > + * Samsung Exynos5433 SoC. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +/dts-v1/; > +#include "exynos5433.dtsi" > +#include <dt-bindings/clock/samsung,s2mps11.h> > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/interrupt-controller/irq.h> > + [snip] > +&hsi2c_0 { > + status = "okay"; > + clock-frequency = <2500000>; > + > + s2mps13-pmic@66 { > + compatible = "samsung,s2mps13-pmic"; > + interrupt-parent = <&gpa0>; > + interrupts = <7 IRQ_TYPE_NONE>; > + reg = <0x66>; > + samsung,s2mps11-wrstbi-ground; > + > + s2mps13_osc: clocks { > + compatible = "samsung,s2mps13-clk"; > + #clock-cells = <1>; > + clock-output-names = "s2mps13_ap", "s2mps13_cp", > + "s2mps13_bt"; > + }; > + > + regulators { > + ldo1_reg: LDO1 { > + regulator-name = "VDD_ALIVE_0.9V_AP"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <900000>; > + regulator-always-on; > + }; > + > + ldo2_reg: LDO2 { > + regulator-name = "VDDQ_MMC2_2.8V_AP"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo3_reg: LDO3 { > + regulator-name = "VDD1_E_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo4_reg: LDO4 { > + regulator-name = "VDD10_MIF_PLL_1.0V_AP"; > + regulator-min-microvolt = <1300000>; > + regulator-max-microvolt = <1300000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo5_reg: LDO5 { > + regulator-name = "VDD10_DPLL_1.0V_AP"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo6_reg: LDO6 { > + regulator-name = "VDD10_MIPI2L_1.0V_AP"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo7_reg: LDO7 { > + regulator-name = "VDD18_MIPI2L_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo8_reg: LDO8 { > + regulator-name = "VDD18_LLI_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo9_reg: LDO9 { > + regulator-name = "VDD18_ABB_ETC_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo10_reg: LDO10 { > + regulator-name = "VDD33_USB30_3.0V_AP"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo11_reg: LDO11 { > + regulator-name = "VDD_INT_M_1.0V_AP"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo12_reg: LDO12 { > + regulator-name = "VDD_KFC_M_1.1V_AP"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1350000>; > + regulator-always-on; > + }; > + > + ldo13_reg: LDO13 { > + regulator-name = "VDD_G3D_M_0.95V_AP"; > + regulator-min-microvolt = <950000>; > + regulator-max-microvolt = <950000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo14_reg: LDO14 { > + regulator-name = "VDDQ_M1_LDO_1.2V_AP"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo15_reg: LDO15 { > + regulator-name = "VDDQ_M2_LDO_1.2V_AP"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + ldo16_reg: LDO16 { > + regulator-name = "VDDQ_EFUSE"; > + regulator-min-microvolt = <1400000>; > + regulator-max-microvolt = <3400000>; > + regulator-always-on; > + }; > + > + ldo17_reg: LDO17 { > + regulator-name = "V_TFLASH_2.8V_AP"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + > + ldo18_reg: LDO18 { > + regulator-name = "V_CODEC_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo19_reg: LDO19 { > + regulator-name = "VDDA_1.8V_COMP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo20_reg: LDO20 { > + regulator-name = "VCC_2.8V_AP"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + }; > + > + ldo21_reg: LDO21 { > + regulator-name = "VT_CAM_1.8V"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo22_reg: LDO22 { > + regulator-name = "CAM_IO_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo23_reg: LDO23 { > + regulator-name = "CAM_SEN_CORE_1.2V_AP"; > + regulator-min-microvolt = <1050000>; > + regulator-max-microvolt = <1200000>; ldo23_reg has the different value between tm2 and tm2e. - tm2 : name - CAM_SEN_CORE_1.2V_AP, max-microvolt :1200000 - tm2e : name - CAM_SEN_CORE_1.025V_AP, max-microvolt :1050000 > + }; > + > + ldo24_reg: LDO24 { > + regulator-name = "VT_CAM_1.2V"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + }; > + > + ldo25_reg: LDO25 { > + regulator-name = "CAM_SEN_A2.8V_AP"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; ldo25 is only used on TM2 and has the different name between tm2 and tm2e. - tm2 : name - CAM_SEN_A2.8V_AP - tm2e : name - UNUSED_LDO15 > + > + ldo26_reg: LDO26 { > + regulator-name = "CAM_AF_2.8V_AP"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + > + ldo27_reg: LDO27 { > + regulator-name = "VCC_3.0V_LCD_AP"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + }; > + > + ldo28_reg: LDO28 { > + regulator-name = "VCC_1.8V_LCD_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo29_reg: LDO29 { > + regulator-name = "VT_CAM_2.8V"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + }; > + > + ldo30_reg: LDO30 { > + regulator-name = "TSP_AVDD_3.3V_AP"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + }; > + > + ldo31_reg: LDO31 { > + regulator-name = "TSP_VDD_1.85V_AP"; > + regulator-min-microvolt = <1850000>; > + regulator-max-microvolt = <1850000>; > + }; ldo31_reg has the different value between tm2 and tm2e. - tm2 : name - TSP_VDD_1.85V_AP, min/max-microvolt :1850000 - tm2e : name - TSP_VDD_1.8V_AP, min/max-microvolt :1800000 > + > + ldo32_reg: LDO32 { > + regulator-name = "VTOUCH_1.8V_AP"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo33_reg: LDO33 { > + regulator-name = "VTOUCH_LED_3.3V"; > + regulator-min-microvolt = <2500000>; > + regulator-max-microvolt = <3300000>; > + regulator-ramp-delay = <12500>; > + }; > + > + ldo34_reg: LDO34 { > + regulator-name = "VCC_1.8V_MHL_AP"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <2100000>; > + }; > + > + ldo35_reg: LDO35 { > + regulator-name = "OIS_VM_2.8V"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2800000>; > + }; > + > + ldo36_reg: LDO36 { > + regulator-name = "VSIL_1.0V"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + }; > + > + ldo37_reg: LDO37 { > + regulator-name = "VF_1.8V"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + }; > + > + ldo38_reg: LDO38 { > + regulator-name = "VCC_3.0V_MOTOR_AP"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + }; ldo38_reg has the different value between tm2 and tm2e. - tm2 : name - VCC_3.0V_MOTOR_AP, min/max-microvolt :3000000 - tm2e : name - VCC_3.3V_MOTOR_AP, min/max-microvolt :3300000 > + regulator-off-in-suspend; > + }; > + }; > + > + buck2_reg: BUCK2 { > + regulator-name = "VDD_EGL_1.0V_AP"; > + regulator-min-microvolt = <900000>; > + regulator-max-microvolt = <1300000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + buck3_reg: BUCK3 { > + regulator-name = "VDD_KFC_1.0V_AP"; > + regulator-min-microvolt = <800000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + buck4_reg: BUCK4 { > + regulator-name = "VDD_INT_0.95V_AP"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1500000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + buck5_reg: BUCK5 { > + regulator-name = "VDD_DISP_CAM0_0.9V_AP"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1500000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + buck6_reg: BUCK6 { > + regulator-name = "VDD_G3D_0.9V_AP"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1500000>; > + regulator-always-on; > + regulator-state-mem { > + regulator-off-in-suspend; > + }; > + }; > + > + buck7_reg: BUCK7 { > + regulator-name = "VDD_MEM1_1.2V_AP"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + }; > + > + buck8_reg: BUCK8 { > + regulator-name = "VDD_LLDO_1.35V_AP"; > + regulator-min-microvolt = <1350000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + buck9_reg: BUCK9 { > + regulator-name = "VDD_MLDO_2.0V_AP"; > + regulator-min-microvolt = <1350000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + buck10_reg: BUCK10 { > + regulator-name = "vdd_mem2"; > + regulator-min-microvolt = <550000>; > + regulator-max-microvolt = <1500000>; > + regulator-always-on; > + }; > + }; > + }; > +}; > + > +&hsi2c_8 { > + status = "okay"; > + > + max77843@66 { > + compatible = "maxim,max77843"; > + interrupt-parent = <&gpa1>; > + interrupts = <5 IRQ_TYPE_EDGE_FALLING>; > + reg = <0x66>; > + > + muic: max77843-muic { > + compatible = "maxim,max77843-muic"; > + }; > + > + regulators { > + compatible = "maxim,max77843-regulator"; > + safeout1_reg: SAFEOUT1 { > + regulator-name = "SAFEOUT1"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <4950000>; > + }; > + > + safeout2_reg: SAFEOUT2 { > + regulator-name = "SAFEOUT2"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <4950000>; > + }; > + > + charger_reg: CHARGER { > + regulator-name = "CHARGER"; > + regulator-min-microamp = <100000>; > + regulator-max-microamp = <3150000>; > + }; > + }; > + > + haptic: max77843-haptic { > + compatible = "maxim,max77843-haptic"; > + haptic-supply = <&ldo38_reg>; > + pwms = <&pwm 0 33670 0>; > + pwm-names = "haptic"; > + }; > + }; > +}; > + > +&i2s0 { > + status = "okay"; > +}; > + > +&mshc_0 { > + status = "okay"; > + num-slots = <1>; > + mmc-hs200-1_8v; > + mmc-hs400-1_8v; > + cap-mmc-highspeed; > + non-removable; > + card-detect-delay = <200>; > + samsung,dw-mshc-ciu-div = <3>; > + samsung,dw-mshc-sdr-timing = <0 4>; > + samsung,dw-mshc-ddr-timing = <0 2>; > + samsung,dw-mshc-hs400-timing = <0 3>; > + samsung,read-strobe-delay = <90>; > + fifo-depth = <0x80>; > + pinctrl-names = "default"; > + pinctrl-0 = <&sd0_clk &sd0_cmd &sd0_qrdy &sd0_bus1 &sd0_bus4 > + &sd0_bus8 &sd0_rdqs>; > + bus-width = <8>; > + assigned-clocks = <&cmu_top CLK_SCLK_MMC0_FSYS>; > + assigned-clock-rates = <800000000>; > +}; > + > +&mshc_2 { > + status = "okay"; > + num-slots = <1>; > + cap-sd-highspeed; > + disable-wp; > + cd-gpios = <&gpa2 4 GPIO_ACTIVE_HIGH>; > + cd-inverted; > + card-detect-delay = <200>; > + samsung,dw-mshc-ciu-div = <3>; > + samsung,dw-mshc-sdr-timing = <0 4>; > + samsung,dw-mshc-ddr-timing = <0 2>; > + fifo-depth = <0x80>; > + pinctrl-names = "default"; > + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_bus1 &sd2_bus4>; > + bus-width = <4>; > +}; > + > +&ppmu_d0_general { > + status = "okay"; > + events { > + ppmu_event0_d0_general: ppmu-event0-d0-general { > + event-name = "ppmu-event0-d0-general"; > + }; > + }; > +}; > + > +&ppmu_d1_general { > + status = "okay"; > + events { > + ppmu_event0_d1_general: ppmu-event0-d1-general { > + event-name = "ppmu-event0-d1-general"; > + }; > + }; > +}; > + > +&pinctrl_alive { > + pinctrl-names = "default"; > + pinctrl-0 = <&initial_alive>; > + The following patches[1] touch the tm2.dts file about pinctrl naming convention. So, I recommend that this patch shoud be rebased on patch[1] to prevent the merge conflict. [1] https://patchwork.kernel.org/patch/9491769/ - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") > + initial_alive: initial-state { > + PIN(IN, gpa0-0, DOWN, LV1); > + PIN(IN, gpa0-1, NONE, LV1); > + PIN(IN, gpa0-2, DOWN, LV1); > + PIN(IN, gpa0-3, NONE, LV1); > + PIN(IN, gpa0-4, NONE, LV1); > + PIN(IN, gpa0-5, DOWN, LV1); > + PIN(IN, gpa0-6, NONE, LV1); > + PIN(IN, gpa0-7, NONE, LV1); > + > + PIN(IN, gpa1-0, UP, LV1); > + PIN(IN, gpa1-1, NONE, LV1); > + PIN(IN, gpa1-2, NONE, LV1); > + PIN(IN, gpa1-3, DOWN, LV1); > + PIN(IN, gpa1-4, DOWN, LV1); > + PIN(IN, gpa1-5, NONE, LV1); > + PIN(IN, gpa1-6, NONE, LV1); > + PIN(IN, gpa1-7, NONE, LV1); > + > + PIN(IN, gpa2-0, NONE, LV1); > + PIN(IN, gpa2-1, NONE, LV1); > + PIN(IN, gpa2-2, NONE, LV1); > + PIN(IN, gpa2-3, DOWN, LV1); > + PIN(IN, gpa2-4, NONE, LV1); > + PIN(IN, gpa2-5, DOWN, LV1); > + PIN(IN, gpa2-6, DOWN, LV1); > + PIN(IN, gpa2-7, NONE, LV1); > + > + PIN(IN, gpa3-0, DOWN, LV1); > + PIN(IN, gpa3-1, DOWN, LV1); > + PIN(IN, gpa3-2, NONE, LV1); > + PIN(IN, gpa3-3, DOWN, LV1); > + PIN(IN, gpa3-4, NONE, LV1); > + PIN(IN, gpa3-5, DOWN, LV1); > + PIN(IN, gpa3-6, DOWN, LV1); > + PIN(IN, gpa3-7, DOWN, LV1); > + > + PIN(IN, gpf1-0, NONE, LV1); > + PIN(IN, gpf1-1, NONE, LV1); > + PIN(IN, gpf1-2, DOWN, LV1); > + PIN(IN, gpf1-4, UP, LV1); > + PIN(OUT, gpf1-5, NONE, LV1); > + PIN(IN, gpf1-6, DOWN, LV1); > + PIN(IN, gpf1-7, DOWN, LV1); > + > + PIN(IN, gpf2-0, DOWN, LV1); > + PIN(IN, gpf2-1, DOWN, LV1); > + PIN(IN, gpf2-2, DOWN, LV1); > + PIN(IN, gpf2-3, DOWN, LV1); > + > + PIN(IN, gpf3-0, DOWN, LV1); > + PIN(IN, gpf3-1, DOWN, LV1); > + PIN(IN, gpf3-2, NONE, LV1); > + PIN(IN, gpf3-3, DOWN, LV1); > + > + PIN(IN, gpf4-0, DOWN, LV1); > + PIN(IN, gpf4-1, DOWN, LV1); > + PIN(IN, gpf4-2, DOWN, LV1); > + PIN(IN, gpf4-3, DOWN, LV1); > + PIN(IN, gpf4-4, DOWN, LV1); > + PIN(IN, gpf4-5, DOWN, LV1); > + PIN(IN, gpf4-6, DOWN, LV1); > + PIN(IN, gpf4-7, DOWN, LV1); > + > + PIN(IN, gpf5-0, DOWN, LV1); > + PIN(IN, gpf5-1, DOWN, LV1); > + PIN(IN, gpf5-2, DOWN, LV1); > + PIN(IN, gpf5-3, DOWN, LV1); > + PIN(OUT, gpf5-4, NONE, LV1); > + PIN(IN, gpf5-5, DOWN, LV1); > + PIN(IN, gpf5-6, DOWN, LV1); > + PIN(IN, gpf5-7, DOWN, LV1); > + }; [snip] > +/* > + * SAMSUNG Exynos5433 TM2 board device tree source > + * > + * Copyright (c) 2016 Samsung Electronics Co., Ltd. > + * > + * Device tree source file for Samsung's TM2 board which is based on > + * Samsung Exynos5433 SoC. > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License version 2 as > + * published by the Free Software Foundation. > + */ > + > +#include "exynos5433-tm2-common.dtsi" > + > +/ { > + model = "Samsung TM2 board"; > + compatible = "samsung,tm2", "samsung,exynos5433"; > +}; > diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts > index 1db4e7f..81fdbef 100644 > --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts > +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts > @@ -11,7 +11,7 @@ > * published by the Free Software Foundation. > */ > > -#include "exynos5433-tm2.dts" > +#include "exynos5433-tm2-common.dtsi" > > / { > model = "Samsung TM2E board"; > -- Best Regards, Chanwoo Choi Samsung Electronics [-- Attachment #2: cw00_choi.vcf --] [-- Type: text/x-vcard, Size: 6 bytes --] null ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 9:13 ` Chanwoo Choi @ 2017-01-05 9:23 ` Andi Shyti 2017-01-05 9:29 ` Chanwoo Choi 2017-01-05 18:37 ` Krzysztof Kozlowski 2017-01-05 9:45 ` Chanwoo Choi 1 sibling, 2 replies; 12+ messages in thread From: Andi Shyti @ 2017-01-05 9:23 UTC (permalink / raw) To: Chanwoo Choi Cc: Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc Hi Chanwoo, > I add the some comment as following: > - ldo23/25/31/38 have the different value between tm2 and tm2e. Thanks for pointing this out. I planned to do this already in a following patch as for now I think it's out from the scope of this particular patch. > - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. > [1] https://patchwork.kernel.org/patch/9491769/ > - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") Yes, I also thought about this, but I didn't know whether it was already picked by anyone. I didn't want to stop Jaechul that's why I was planning to rebase the other rather than this. But you are right, because some bits of the other patches I know that have been merged. Thank you! Krzysztof, do you mind if I send patch 3 as a reply to this e-mail? The changes should not affect patch 4, anyway. Thanks, Andi ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 9:23 ` Andi Shyti @ 2017-01-05 9:29 ` Chanwoo Choi 2017-01-05 9:33 ` Andi Shyti 2017-01-05 18:37 ` Krzysztof Kozlowski 1 sibling, 1 reply; 12+ messages in thread From: Chanwoo Choi @ 2017-01-05 9:29 UTC (permalink / raw) To: Andi Shyti Cc: Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc [-- Attachment #1: Type: text/plain, Size: 1321 bytes --] Hi, On 2017년 01월 05일 18:23, Andi Shyti wrote: > Hi Chanwoo, > >> I add the some comment as following: >> - ldo23/25/31/38 have the different value between tm2 and tm2e. > > Thanks for pointing this out. I planned to do this already in a > following patch as for now I think it's out from the scope of this > particular patch. I think it is very simple work. If you want to make the common.dtsi, I think that you have to separate the different thing on each exynos5433-tm2X.dts. > >> - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. >> [1] https://patchwork.kernel.org/patch/9491769/ >> - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") > > Yes, I also thought about this, but I didn't know whether it was > already picked by anyone. I didn't want to stop Jaechul that's > why I was planning to rebase the other rather than this. > But you are right, because some bits of the other patches I know > that have been merged. Thank you! > > Krzysztof, do you mind if I send patch 3 as a reply to this > e-mail? The changes should not affect patch 4, anyway. No, If exynos5433-tm2.dts includes the different value of regulator, patch4 might be implemented based on patch3. > > Thanks, > Andi > > -- Best Regards, Chanwoo Choi Samsung Electronics [-- Attachment #2: cw00_choi.vcf --] [-- Type: text/x-vcard, Size: 6 bytes --] null ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 9:29 ` Chanwoo Choi @ 2017-01-05 9:33 ` Andi Shyti 0 siblings, 0 replies; 12+ messages in thread From: Andi Shyti @ 2017-01-05 9:33 UTC (permalink / raw) To: Chanwoo Choi Cc: Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc Hi Chanwoo, > >> I add the some comment as following: > >> - ldo23/25/31/38 have the different value between tm2 and tm2e. > > > > Thanks for pointing this out. I planned to do this already in a > > following patch as for now I think it's out from the scope of this > > particular patch. > > I think it is very simple work. If you want to make the common.dtsi, > I think that you have to separate the different thing on each exynos5433-tm2X.dts. > > > > >> - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. > >> [1] https://patchwork.kernel.org/patch/9491769/ > >> - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") > > > > Yes, I also thought about this, but I didn't know whether it was > > already picked by anyone. I didn't want to stop Jaechul that's > > why I was planning to rebase the other rather than this. > > But you are right, because some bits of the other patches I know > > that have been merged. Thank you! > > > > Krzysztof, do you mind if I send patch 3 as a reply to this > > e-mail? The changes should not affect patch 4, anyway. > > No, If exynos5433-tm2.dts includes the different value of regulator, > patch4 might be implemented based on patch3. OK, I will re-work the patch 3 with the regulators and generate again patch 4. Thanks, Andi ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 9:23 ` Andi Shyti 2017-01-05 9:29 ` Chanwoo Choi @ 2017-01-05 18:37 ` Krzysztof Kozlowski 1 sibling, 0 replies; 12+ messages in thread From: Krzysztof Kozlowski @ 2017-01-05 18:37 UTC (permalink / raw) To: Andi Shyti Cc: Chanwoo Choi, Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc On Thu, Jan 05, 2017 at 06:23:15PM +0900, Andi Shyti wrote: > Hi Chanwoo, > > > I add the some comment as following: > > - ldo23/25/31/38 have the different value between tm2 and tm2e. > > Thanks for pointing this out. I planned to do this already in a > following patch as for now I think it's out from the scope of this > particular patch. > > > - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. > > [1] https://patchwork.kernel.org/patch/9491769/ > > - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") > > Yes, I also thought about this, but I didn't know whether it was > already picked by anyone. I didn't want to stop Jaechul that's > why I was planning to rebase the other rather than this. > But you are right, because some bits of the other patches I know > that have been merged. Thank you! > > Krzysztof, do you mind if I send patch 3 as a reply to this > e-mail? The changes should not affect patch 4, anyway. By patch 3 you mean this patch? Yes, you can send another version as a reply-to but please version it (2.1? etc). Anyway I need a proper rename detection. I pointed proper command last time. Is it working? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other 2017-01-05 9:13 ` Chanwoo Choi 2017-01-05 9:23 ` Andi Shyti @ 2017-01-05 9:45 ` Chanwoo Choi 1 sibling, 0 replies; 12+ messages in thread From: Chanwoo Choi @ 2017-01-05 9:45 UTC (permalink / raw) To: Jaechul Lee, Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Andi Shyti, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc [-- Attachment #1: Type: text/plain, Size: 9382 bytes --] Hi Andi, I correct the my previous comment about ldo23 and ldo25 because I check the final schematic document, I worked with wrong information of ldo23 and ldo25 on the patch[1]. [1] https://lkml.org/lkml/2016/11/3/61 I'll send the fix patch to you right now after that you better to work for these patches. On 2017년 01월 05일 18:13, Chanwoo Choi wrote: > Hi, > > I add the some comment as following: > - ldo23/25/31/38 have the different value between tm2 and tm2e. > - The patch[1] was alread posted. I think you better to rebase this patch on patch[1]. > [1] https://patchwork.kernel.org/patch/9491769/ > - ("ARM64: dts: TM2: comply to the samsung pinctrl naming convention") > > I add detailed comments on below. > > On 2017년 01월 05일 17:27, Jaechul Lee wrote: >> From: Andi Shyti <andi.shyti@samsung.com> >> >> Currently tm2e dts includes tm2 but there are some differences >> between the two boards and tm2 has some properties that tm2e >> doesn't have. >> >> That's why it's important to keep the two dts files independent >> and put all the commonalities in a tm2-common.dtsi file. >> >> Signed-off-by: Andi Shyti <andi.shyti@samsung.com> >> Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> >> --- >> .../boot/dts/exynos/exynos5433-tm2-common.dtsi | 1116 +++++++++++++++++++ >> arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 1138 +------------------- >> arch/arm64/boot/dts/exynos/exynos5433-tm2e.dts | 2 +- >> 3 files changed, 1136 insertions(+), 1120 deletions(-) >> create mode 100644 arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi >> rewrite arch/arm64/boot/dts/exynos/exynos5433-tm2.dts (98%) >> >> diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi >> new file mode 100644 >> index 0000000..7ad0019 >> --- /dev/null >> +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2-common.dtsi >> @@ -0,0 +1,1116 @@ >> +/* >> + * SAMSUNG Exynos5433 TM2 board device tree source >> + * >> + * Copyright (c) 2016 Samsung Electronics Co., Ltd. >> + * >> + * Device tree source file for Samsung's TM2 board which is based on >> + * Samsung Exynos5433 SoC. >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> + */ >> + >> +/dts-v1/; >> +#include "exynos5433.dtsi" >> +#include <dt-bindings/clock/samsung,s2mps11.h> >> +#include <dt-bindings/gpio/gpio.h> >> +#include <dt-bindings/input/input.h> >> +#include <dt-bindings/interrupt-controller/irq.h> >> + > > [snip] > >> +&hsi2c_0 { >> + status = "okay"; >> + clock-frequency = <2500000>; >> + >> + s2mps13-pmic@66 { >> + compatible = "samsung,s2mps13-pmic"; >> + interrupt-parent = <&gpa0>; >> + interrupts = <7 IRQ_TYPE_NONE>; >> + reg = <0x66>; >> + samsung,s2mps11-wrstbi-ground; >> + >> + s2mps13_osc: clocks { >> + compatible = "samsung,s2mps13-clk"; >> + #clock-cells = <1>; >> + clock-output-names = "s2mps13_ap", "s2mps13_cp", >> + "s2mps13_bt"; >> + }; >> + >> + regulators { >> + ldo1_reg: LDO1 { >> + regulator-name = "VDD_ALIVE_0.9V_AP"; >> + regulator-min-microvolt = <900000>; >> + regulator-max-microvolt = <900000>; >> + regulator-always-on; >> + }; >> + >> + ldo2_reg: LDO2 { >> + regulator-name = "VDDQ_MMC2_2.8V_AP"; >> + regulator-min-microvolt = <2800000>; >> + regulator-max-microvolt = <2800000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo3_reg: LDO3 { >> + regulator-name = "VDD1_E_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-always-on; >> + }; >> + >> + ldo4_reg: LDO4 { >> + regulator-name = "VDD10_MIF_PLL_1.0V_AP"; >> + regulator-min-microvolt = <1300000>; >> + regulator-max-microvolt = <1300000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo5_reg: LDO5 { >> + regulator-name = "VDD10_DPLL_1.0V_AP"; >> + regulator-min-microvolt = <1000000>; >> + regulator-max-microvolt = <1000000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo6_reg: LDO6 { >> + regulator-name = "VDD10_MIPI2L_1.0V_AP"; >> + regulator-min-microvolt = <1000000>; >> + regulator-max-microvolt = <1000000>; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo7_reg: LDO7 { >> + regulator-name = "VDD18_MIPI2L_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + }; >> + >> + ldo8_reg: LDO8 { >> + regulator-name = "VDD18_LLI_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo9_reg: LDO9 { >> + regulator-name = "VDD18_ABB_ETC_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo10_reg: LDO10 { >> + regulator-name = "VDD33_USB30_3.0V_AP"; >> + regulator-min-microvolt = <3000000>; >> + regulator-max-microvolt = <3000000>; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo11_reg: LDO11 { >> + regulator-name = "VDD_INT_M_1.0V_AP"; >> + regulator-min-microvolt = <1000000>; >> + regulator-max-microvolt = <1000000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo12_reg: LDO12 { >> + regulator-name = "VDD_KFC_M_1.1V_AP"; >> + regulator-min-microvolt = <800000>; >> + regulator-max-microvolt = <1350000>; >> + regulator-always-on; >> + }; >> + >> + ldo13_reg: LDO13 { >> + regulator-name = "VDD_G3D_M_0.95V_AP"; >> + regulator-min-microvolt = <950000>; >> + regulator-max-microvolt = <950000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo14_reg: LDO14 { >> + regulator-name = "VDDQ_M1_LDO_1.2V_AP"; >> + regulator-min-microvolt = <1200000>; >> + regulator-max-microvolt = <1200000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo15_reg: LDO15 { >> + regulator-name = "VDDQ_M2_LDO_1.2V_AP"; >> + regulator-min-microvolt = <1200000>; >> + regulator-max-microvolt = <1200000>; >> + regulator-always-on; >> + regulator-state-mem { >> + regulator-off-in-suspend; >> + }; >> + }; >> + >> + ldo16_reg: LDO16 { >> + regulator-name = "VDDQ_EFUSE"; >> + regulator-min-microvolt = <1400000>; >> + regulator-max-microvolt = <3400000>; >> + regulator-always-on; >> + }; >> + >> + ldo17_reg: LDO17 { >> + regulator-name = "V_TFLASH_2.8V_AP"; >> + regulator-min-microvolt = <2800000>; >> + regulator-max-microvolt = <2800000>; >> + }; >> + >> + ldo18_reg: LDO18 { >> + regulator-name = "V_CODEC_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + }; >> + >> + ldo19_reg: LDO19 { >> + regulator-name = "VDDA_1.8V_COMP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + regulator-always-on; >> + }; >> + >> + ldo20_reg: LDO20 { >> + regulator-name = "VCC_2.8V_AP"; >> + regulator-min-microvolt = <2800000>; >> + regulator-max-microvolt = <2800000>; >> + regulator-always-on; >> + }; >> + >> + ldo21_reg: LDO21 { >> + regulator-name = "VT_CAM_1.8V"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + }; >> + >> + ldo22_reg: LDO22 { >> + regulator-name = "CAM_IO_1.8V_AP"; >> + regulator-min-microvolt = <1800000>; >> + regulator-max-microvolt = <1800000>; >> + }; >> + >> + ldo23_reg: LDO23 { >> + regulator-name = "CAM_SEN_CORE_1.2V_AP"; >> + regulator-min-microvolt = <1050000>; >> + regulator-max-microvolt = <1200000>; > > ldo23_reg has the different value between tm2 and tm2e. > - tm2 : name - CAM_SEN_CORE_1.2V_AP, max-microvolt :1200000 > - tm2e : name - CAM_SEN_CORE_1.025V_AP, max-microvolt :1050000 To check the final schematic document, ldo23 is used on both tm2 and tm2e without difference. But, name is CAM_SEN_CORE_1.05V_AP > >> + }; >> + >> + ldo24_reg: LDO24 { >> + regulator-name = "VT_CAM_1.2V"; >> + regulator-min-microvolt = <1200000>; >> + regulator-max-microvolt = <1200000>; >> + }; >> + >> + ldo25_reg: LDO25 { >> + regulator-name = "CAM_SEN_A2.8V_AP"; >> + regulator-min-microvolt = <2800000>; >> + regulator-max-microvolt = <2800000>; >> + }; > > ldo25 is only used on TM2 and has the different name between tm2 and tm2e. > - tm2 : name - CAM_SEN_A2.8V_AP > - tm2e : name - UNUSED_LDO15 To check the final schematic document, ldo25 is not used on both tm2 and tm2e. [snip] -- Best Regards, Chanwoo Choi Samsung Electronics [-- Attachment #2: cw00_choi.vcf --] [-- Type: text/x-vcard, Size: 6 bytes --] null ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <CGME20170105082716epcas1p100f48f22d5ff0bad7776f6d7b444daf3@epcas1p1.samsung.com>]
* [PATCH v2 4/4] arm64: dts: exynos: Add tm2 touchkey node [not found] ` <CGME20170105082716epcas1p100f48f22d5ff0bad7776f6d7b444daf3@epcas1p1.samsung.com> @ 2017-01-05 8:27 ` Jaechul Lee 2017-01-05 18:41 ` Krzysztof Kozlowski 0 siblings, 1 reply; 12+ messages in thread From: Jaechul Lee @ 2017-01-05 8:27 UTC (permalink / raw) To: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas Cc: Jaechul Lee, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc Add DT node support for TM2 touchkey device. Signed-off-by: Beomho Seo <beomho.seo@samsung.com> Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> Signed-off-by: Andi Shyti <andi.shyti@samsung.com> Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com> Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> --- arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts index aa8584a..dad6fb8 100644 --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts @@ -17,3 +17,16 @@ model = "Samsung TM2 board"; compatible = "samsung,tm2", "samsung,exynos5433"; }; + +&hsi2c_9 { + status = "okay"; + + touchkey@20 { + compatible = "samsung,tm2-touchkey"; + reg = <0x20>; + interrupt-parent = <&gpa3>; + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; + vcc-supply = <&ldo32_reg>; + vdd-supply = <&ldo33_reg>; + }; +}; -- 2.7.4 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/4] arm64: dts: exynos: Add tm2 touchkey node 2017-01-05 8:27 ` [PATCH v2 4/4] arm64: dts: exynos: Add tm2 touchkey node Jaechul Lee @ 2017-01-05 18:41 ` Krzysztof Kozlowski 0 siblings, 0 replies; 12+ messages in thread From: Krzysztof Kozlowski @ 2017-01-05 18:41 UTC (permalink / raw) To: Jaechul Lee Cc: Dmitry Torokhov, Rob Herring, Mark Rutland, Catalin Marinas, Will Deacon, Kukjin Kim, Krzysztof Kozlowski, Javier Martinez Canillas, Andi Shyti, Chanwoo Choi, beomho.seo, galaxyra, linux-arm-kernel, linux-input, devicetree, linux-kernel, linux-samsung-soc On Thu, Jan 05, 2017 at 05:27:13PM +0900, Jaechul Lee wrote: > Add DT node support for TM2 touchkey device. > > Signed-off-by: Beomho Seo <beomho.seo@samsung.com> > Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com> > Signed-off-by: Andi Shyti <andi.shyti@samsung.com> > Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com> > Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Although I said the patch looks correct, it was not an explicit Review (and we have a quite serious "Reviewer's statement of oversight") so my tag should not be added. No harm was done, but I prefer clearly and explicitly given tags. Best regards, Krzysztof > --- > arch/arm64/boot/dts/exynos/exynos5433-tm2.dts | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts > index aa8584a..dad6fb8 100644 > --- a/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts > +++ b/arch/arm64/boot/dts/exynos/exynos5433-tm2.dts > @@ -17,3 +17,16 @@ > model = "Samsung TM2 board"; > compatible = "samsung,tm2", "samsung,exynos5433"; > }; > + > +&hsi2c_9 { > + status = "okay"; > + > + touchkey@20 { > + compatible = "samsung,tm2-touchkey"; > + reg = <0x20>; > + interrupt-parent = <&gpa3>; > + interrupts = <2 IRQ_TYPE_EDGE_FALLING>; > + vcc-supply = <&ldo32_reg>; > + vdd-supply = <&ldo33_reg>; > + }; > +}; > -- > 2.7.4 > ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-01-05 18:42 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CGME20170105082715epcas1p10e0820a792ba9d89cd165299d6602654@epcas1p1.samsung.com> 2017-01-05 8:27 ` [PATCH v2 0/4] Add touch key driver support for TM2 Jaechul Lee [not found] ` <CGME20170105082715epcas1p19fbee2c06efcd99a34bbff491bccb789@epcas1p1.samsung.com> 2017-01-05 8:27 ` [PATCH v2 1/4] input: Add support for the tm2 touchkey device driver Jaechul Lee [not found] ` <CGME20170105082715epcas1p108f8213ce8ea52b9b58f9f2de64a1b94@epcas1p1.samsung.com> 2017-01-05 8:27 ` [PATCH v2 2/4] input: tm2-touchkey: Add touchkey driver support for TM2 Jaechul Lee [not found] ` <CGME20170105082716epcas1p1f2a6eea40d842e2d8f7f7f54c029bc82@epcas1p1.samsung.com> 2017-01-05 8:27 ` [PATCH v2 3/4] arm64: dts: exynos: make tm2 and tm2e independent from each other Jaechul Lee 2017-01-05 9:13 ` Chanwoo Choi 2017-01-05 9:23 ` Andi Shyti 2017-01-05 9:29 ` Chanwoo Choi 2017-01-05 9:33 ` Andi Shyti 2017-01-05 18:37 ` Krzysztof Kozlowski 2017-01-05 9:45 ` Chanwoo Choi [not found] ` <CGME20170105082716epcas1p100f48f22d5ff0bad7776f6d7b444daf3@epcas1p1.samsung.com> 2017-01-05 8:27 ` [PATCH v2 4/4] arm64: dts: exynos: Add tm2 touchkey node Jaechul Lee 2017-01-05 18:41 ` Krzysztof Kozlowski
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).