All of lore.kernel.org
 help / color / mirror / Atom feed
From: Timon Baetz <timon.baetz@protonmail.com>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Sebastian Reichel <sre@kernel.org>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	Kukjin Kim <kgene@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-samsung-soc@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org, devicetree@vger.kernel.org,
	~postmarketos/upstreaming@lists.sr.ht
Subject: Re: [PATCH 2/3] power: supply: max8997_charger: Set CHARGER current limit
Date: Sat, 05 Dec 2020 07:54:48 +0000	[thread overview]
Message-ID: <20201205085442.6ef557fc.timon.baetz@protonmail.com> (raw)
In-Reply-To: <20201202215057.GA135888@kozik-lap>

On Wed, 2 Dec 2020 23:50:57 +0200, Krzysztof Kozlowski wrote:
> On Wed, Dec 02, 2020 at 09:07:19PM +0000, Timon Baetz wrote:
> > Register for extcon notification and set charging current depending on
> > the detected cable type. Current values are taken from i9100 kernel
> > fork.
> >
> > Enable and disable the CHARGER regulator based on extcon events and
> > remove regulator-always-on from the device tree.
> >
> > Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> > ---
> >  arch/arm/boot/dts/exynos4210-i9100.dts |  1 -
> >  drivers/power/supply/max8997_charger.c | 92 ++++++++++++++++++++++++++
> >  2 files changed, 92 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
> > index 6d0c04d77a39..9f8d927e0d21 100644
> > --- a/arch/arm/boot/dts/exynos4210-i9100.dts
> > +++ b/arch/arm/boot/dts/exynos4210-i9100.dts
> > @@ -560,7 +560,6 @@ charger_reg: CHARGER {
> >  				regulator-name = "CHARGER";
> >  				regulator-min-microamp = <60000>;
> >  				regulator-max-microamp = <2580000>;
> > -				regulator-always-on;  
> 
> Thanks for the patch.
> 
> The DTS changes always go separately.
> 
> >  			};
> >
> >  			chargercv_reg: CHARGER_CV {
> > diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
> > index 1947af25879a..26cd271576ec 100644
> > --- a/drivers/power/supply/max8997_charger.c
> > +++ b/drivers/power/supply/max8997_charger.c
> > @@ -6,6 +6,7 @@
> >  //  MyungJoo Ham <myungjoo.ham@samsung.com>
> >
> >  #include <linux/err.h>
> > +#include <linux/extcon.h>
> >  #include <linux/module.h>
> >  #include <linux/slab.h>
> >  #include <linux/platform_device.h>
> > @@ -31,6 +32,12 @@ struct charger_data {
> >  	struct device *dev;
> >  	struct max8997_dev *iodev;
> >  	struct power_supply *battery;
> > +	struct regulator *reg;  
> 
> You need to include regulator consumer.h.
> 
> > +	struct {  
> 
> It makes all dereferences longer. Just add a comment that these are
> related to the extcon.
> 
> > +		struct extcon_dev *edev;
> > +		struct notifier_block nb;
> > +		struct work_struct work;
> > +	} extcon;
> >  };
> >
> >  static enum power_supply_property max8997_battery_props[] = {
> > @@ -88,6 +95,63 @@ static int max8997_battery_get_property(struct power_supply *psy,
> >  	return 0;
> >  }
> >
> > +static void max8997_battery_extcon_evt_stop_work(void *data)
> > +{
> > +	struct charger_data *charger = data;
> > +
> > +	cancel_work_sync(&charger->extcon.work);
> > +}
> > +
> > +static void max8997_battery_extcon_evt_worker(struct work_struct *work)
> > +{
> > +	struct charger_data *charger =
> > +	    container_of(work, struct charger_data, extcon.work);
> > +	int ret, current_limit;
> > +	struct extcon_dev *edev = charger->extcon.edev;
> > +  
> 
> It would be useful to report the current with POWER_SUPPLY_PROP_* but
> it is a different patch.
> 
> > +	if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
> > +		dev_dbg(charger->dev, "USB SDP charger is connected\n");
> > +		current_limit = 450000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
> > +		dev_dbg(charger->dev, "USB DCP charger is connected\n");
> > +		current_limit = 650000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
> > +		dev_dbg(charger->dev, "USB FAST charger is connected\n");
> > +		current_limit = 650000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
> > +		dev_dbg(charger->dev, "USB SLOW charger is connected\n");
> > +		current_limit = 650000;  
> 
> The charger provides 500 mA, so I wonder whether 650 here is correct. Is
> it at different voltage?
> 

I was wondering about that as well but as far as I can tell
https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
treats all 4 charger types as MUIC_CHG_TYPE_TA which ends up settings
650 mA. Voltage doesn't seem to change in vendor kernel.  

> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
> > +		dev_dbg(charger->dev, "USB CDP charger is connected\n");
> > +		current_limit = 650000;
> > +	} else {
> > +		dev_dbg(charger->dev, "USB charger is diconnected\n");
> > +		current_limit = -1;
> > +	}
> > +
> > +	if (current_limit > 0) {  
> 
> ret should be declared here.
> 
> > +		ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to set current limit: %d\n", ret);  
> 
> Failure of setting the current should rather disable the charging.
> 
> > +		ret = regulator_enable(charger->reg);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
> > +	} else {  
> 
> ret should be declared here.
> 
> > +		ret = regulator_disable(charger->reg);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
> > +	}  
> 
> What about top-off charging?
> 
> > +}
> > +
> > +static int max8997_battery_extcon_evt(struct notifier_block *nb,
> > +				unsigned long event, void *param)
> > +{
> > +	struct charger_data *charger =
> > +		container_of(nb, struct charger_data, extcon.nb);
> > +	schedule_work(&charger->extcon.work);
> > +	return NOTIFY_OK;
> > +}
> > +
> >  static const struct power_supply_desc max8997_battery_desc = {
> >  	.name		= "max8997_pmic",
> >  	.type		= POWER_SUPPLY_TYPE_BATTERY,
> > @@ -104,6 +168,7 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  	struct i2c_client *i2c = iodev->i2c;
> >  	struct max8997_platform_data *pdata = iodev->pdata;
> >  	struct power_supply_config psy_cfg = {};
> > +	struct extcon_dev *edev;
> >
> >  	if (!pdata) {
> >  		dev_err(&pdev->dev, "No platform data supplied.\n");
> > @@ -151,6 +216,12 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  		return ret;
> >  	}
> >
> > +	edev = extcon_get_extcon_dev("max8997-muic");  
> 
> Store it directly under charger->edev.
> 
> > +	if (edev == NULL) {  
> 
> if (!edev) {
> 
> > +		dev_info(&pdev->dev, "extcon is not ready, probe deferred\n");  
> 
> Do not print anything on deferrals.
> 
> > +		return -EPROBE_DEFER;
> > +	}
> > +
> >  	charger = devm_kzalloc(&pdev->dev, sizeof(*charger), GFP_KERNEL);
> >  	if (!charger)
> >  		return -ENOMEM;
> > @@ -170,6 +241,27 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  		return PTR_ERR(charger->battery);
> >  	}
> >
> > +	charger->reg = regulator_get(&pdev->dev, "CHARGER");  
> 
> Here and in extcon_get_extcon_dev() - you make all these devices tightly
> coupled. It will work, but I am afraid it's easy to break later.
> 
> Instead you should have a device node in DTS to which the charger could
> bind and where the driver will find regulator supply and extcon
> phandles (with extcon_get_edev_by_phandle() for example).
> 
> > +	if (IS_ERR(charger->reg)) {
> > +		dev_err(&pdev->dev, "couldn't get CHARGER regulator\n");
> > +		return PTR_ERR(charger->reg);
> > +	}
> > +
> > +	INIT_WORK(&charger->extcon.work, max8997_battery_extcon_evt_worker);
> > +	ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger);
> > +	if (ret) {
> > +		dev_err(&pdev->dev, "failed to add extcon evt stop action: %d\n", ret);  
> 
> Missing regulator_put() here and in other places. Use devm-().
> 
> > +		return ret;
> > +	}
> > +	charger->extcon.edev = edev;
> > +	charger->extcon.nb.notifier_call = max8997_battery_extcon_evt;
> > +	ret = devm_extcon_register_notifier_all(&pdev->dev, charger->extcon.edev,
> > +			&charger->extcon.nb);  
> 
> Align the arguments with opening '('.
> 
> Best regards,
> Krzysztof




WARNING: multiple messages have this Message-ID (diff)
From: Timon Baetz <timon.baetz@protonmail.com>
To: Krzysztof Kozlowski <krzk@kernel.org>
Cc: devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org,
	linux-pm@vger.kernel.org, Sebastian Reichel <sre@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	linux-kernel@vger.kernel.org,
	Chanwoo Choi <cw00.choi@samsung.com>,
	Kukjin Kim <kgene@kernel.org>,
	MyungJoo Ham <myungjoo.ham@samsung.com>,
	linux-arm-kernel@lists.infradead.org,
	~postmarketos/upstreaming@lists.sr.ht
Subject: Re: [PATCH 2/3] power: supply: max8997_charger: Set CHARGER current limit
Date: Sat, 05 Dec 2020 07:54:48 +0000	[thread overview]
Message-ID: <20201205085442.6ef557fc.timon.baetz@protonmail.com> (raw)
In-Reply-To: <20201202215057.GA135888@kozik-lap>

On Wed, 2 Dec 2020 23:50:57 +0200, Krzysztof Kozlowski wrote:
> On Wed, Dec 02, 2020 at 09:07:19PM +0000, Timon Baetz wrote:
> > Register for extcon notification and set charging current depending on
> > the detected cable type. Current values are taken from i9100 kernel
> > fork.
> >
> > Enable and disable the CHARGER regulator based on extcon events and
> > remove regulator-always-on from the device tree.
> >
> > Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> > ---
> >  arch/arm/boot/dts/exynos4210-i9100.dts |  1 -
> >  drivers/power/supply/max8997_charger.c | 92 ++++++++++++++++++++++++++
> >  2 files changed, 92 insertions(+), 1 deletion(-)
> >
> > diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
> > index 6d0c04d77a39..9f8d927e0d21 100644
> > --- a/arch/arm/boot/dts/exynos4210-i9100.dts
> > +++ b/arch/arm/boot/dts/exynos4210-i9100.dts
> > @@ -560,7 +560,6 @@ charger_reg: CHARGER {
> >  				regulator-name = "CHARGER";
> >  				regulator-min-microamp = <60000>;
> >  				regulator-max-microamp = <2580000>;
> > -				regulator-always-on;  
> 
> Thanks for the patch.
> 
> The DTS changes always go separately.
> 
> >  			};
> >
> >  			chargercv_reg: CHARGER_CV {
> > diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
> > index 1947af25879a..26cd271576ec 100644
> > --- a/drivers/power/supply/max8997_charger.c
> > +++ b/drivers/power/supply/max8997_charger.c
> > @@ -6,6 +6,7 @@
> >  //  MyungJoo Ham <myungjoo.ham@samsung.com>
> >
> >  #include <linux/err.h>
> > +#include <linux/extcon.h>
> >  #include <linux/module.h>
> >  #include <linux/slab.h>
> >  #include <linux/platform_device.h>
> > @@ -31,6 +32,12 @@ struct charger_data {
> >  	struct device *dev;
> >  	struct max8997_dev *iodev;
> >  	struct power_supply *battery;
> > +	struct regulator *reg;  
> 
> You need to include regulator consumer.h.
> 
> > +	struct {  
> 
> It makes all dereferences longer. Just add a comment that these are
> related to the extcon.
> 
> > +		struct extcon_dev *edev;
> > +		struct notifier_block nb;
> > +		struct work_struct work;
> > +	} extcon;
> >  };
> >
> >  static enum power_supply_property max8997_battery_props[] = {
> > @@ -88,6 +95,63 @@ static int max8997_battery_get_property(struct power_supply *psy,
> >  	return 0;
> >  }
> >
> > +static void max8997_battery_extcon_evt_stop_work(void *data)
> > +{
> > +	struct charger_data *charger = data;
> > +
> > +	cancel_work_sync(&charger->extcon.work);
> > +}
> > +
> > +static void max8997_battery_extcon_evt_worker(struct work_struct *work)
> > +{
> > +	struct charger_data *charger =
> > +	    container_of(work, struct charger_data, extcon.work);
> > +	int ret, current_limit;
> > +	struct extcon_dev *edev = charger->extcon.edev;
> > +  
> 
> It would be useful to report the current with POWER_SUPPLY_PROP_* but
> it is a different patch.
> 
> > +	if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
> > +		dev_dbg(charger->dev, "USB SDP charger is connected\n");
> > +		current_limit = 450000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
> > +		dev_dbg(charger->dev, "USB DCP charger is connected\n");
> > +		current_limit = 650000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
> > +		dev_dbg(charger->dev, "USB FAST charger is connected\n");
> > +		current_limit = 650000;
> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
> > +		dev_dbg(charger->dev, "USB SLOW charger is connected\n");
> > +		current_limit = 650000;  
> 
> The charger provides 500 mA, so I wonder whether 650 here is correct. Is
> it at different voltage?
> 

I was wondering about that as well but as far as I can tell
https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
treats all 4 charger types as MUIC_CHG_TYPE_TA which ends up settings
650 mA. Voltage doesn't seem to change in vendor kernel.  

> > +	} else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
> > +		dev_dbg(charger->dev, "USB CDP charger is connected\n");
> > +		current_limit = 650000;
> > +	} else {
> > +		dev_dbg(charger->dev, "USB charger is diconnected\n");
> > +		current_limit = -1;
> > +	}
> > +
> > +	if (current_limit > 0) {  
> 
> ret should be declared here.
> 
> > +		ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to set current limit: %d\n", ret);  
> 
> Failure of setting the current should rather disable the charging.
> 
> > +		ret = regulator_enable(charger->reg);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
> > +	} else {  
> 
> ret should be declared here.
> 
> > +		ret = regulator_disable(charger->reg);
> > +		if (ret)
> > +			dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
> > +	}  
> 
> What about top-off charging?
> 
> > +}
> > +
> > +static int max8997_battery_extcon_evt(struct notifier_block *nb,
> > +				unsigned long event, void *param)
> > +{
> > +	struct charger_data *charger =
> > +		container_of(nb, struct charger_data, extcon.nb);
> > +	schedule_work(&charger->extcon.work);
> > +	return NOTIFY_OK;
> > +}
> > +
> >  static const struct power_supply_desc max8997_battery_desc = {
> >  	.name		= "max8997_pmic",
> >  	.type		= POWER_SUPPLY_TYPE_BATTERY,
> > @@ -104,6 +168,7 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  	struct i2c_client *i2c = iodev->i2c;
> >  	struct max8997_platform_data *pdata = iodev->pdata;
> >  	struct power_supply_config psy_cfg = {};
> > +	struct extcon_dev *edev;
> >
> >  	if (!pdata) {
> >  		dev_err(&pdev->dev, "No platform data supplied.\n");
> > @@ -151,6 +216,12 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  		return ret;
> >  	}
> >
> > +	edev = extcon_get_extcon_dev("max8997-muic");  
> 
> Store it directly under charger->edev.
> 
> > +	if (edev == NULL) {  
> 
> if (!edev) {
> 
> > +		dev_info(&pdev->dev, "extcon is not ready, probe deferred\n");  
> 
> Do not print anything on deferrals.
> 
> > +		return -EPROBE_DEFER;
> > +	}
> > +
> >  	charger = devm_kzalloc(&pdev->dev, sizeof(*charger), GFP_KERNEL);
> >  	if (!charger)
> >  		return -ENOMEM;
> > @@ -170,6 +241,27 @@ static int max8997_battery_probe(struct platform_device *pdev)
> >  		return PTR_ERR(charger->battery);
> >  	}
> >
> > +	charger->reg = regulator_get(&pdev->dev, "CHARGER");  
> 
> Here and in extcon_get_extcon_dev() - you make all these devices tightly
> coupled. It will work, but I am afraid it's easy to break later.
> 
> Instead you should have a device node in DTS to which the charger could
> bind and where the driver will find regulator supply and extcon
> phandles (with extcon_get_edev_by_phandle() for example).
> 
> > +	if (IS_ERR(charger->reg)) {
> > +		dev_err(&pdev->dev, "couldn't get CHARGER regulator\n");
> > +		return PTR_ERR(charger->reg);
> > +	}
> > +
> > +	INIT_WORK(&charger->extcon.work, max8997_battery_extcon_evt_worker);
> > +	ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger);
> > +	if (ret) {
> > +		dev_err(&pdev->dev, "failed to add extcon evt stop action: %d\n", ret);  
> 
> Missing regulator_put() here and in other places. Use devm-().
> 
> > +		return ret;
> > +	}
> > +	charger->extcon.edev = edev;
> > +	charger->extcon.nb.notifier_call = max8997_battery_extcon_evt;
> > +	ret = devm_extcon_register_notifier_all(&pdev->dev, charger->extcon.edev,
> > +			&charger->extcon.nb);  
> 
> Align the arguments with opening '('.
> 
> Best regards,
> Krzysztof




_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-12-05  7:56 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-02 21:07 [PATCH 1/3] extcon: max8997: Add CHGINS and CHGRM interrupt handling Timon Baetz
2020-12-02 21:07 ` Timon Baetz
2020-12-02 21:07 ` [PATCH 2/3] power: supply: max8997_charger: Set CHARGER current limit Timon Baetz
2020-12-02 21:07   ` Timon Baetz
2020-12-02 21:50   ` Krzysztof Kozlowski
2020-12-02 21:50     ` Krzysztof Kozlowski
2020-12-05  7:54     ` Timon Baetz [this message]
2020-12-05  7:54       ` Timon Baetz
2020-12-02 21:07 ` [PATCH 3/3] ARM: dts: exynos: Fix charging regulator voltage and current for i9100 Timon Baetz
2020-12-02 21:07   ` Timon Baetz
2020-12-02 22:04   ` Krzysztof Kozlowski
2020-12-02 22:04     ` Krzysztof Kozlowski
2020-12-03  5:46     ` Timon Bätz
2020-12-03  5:46       ` Timon Bätz
2020-12-03  8:23       ` Krzysztof Kozlowski
2020-12-03  8:23         ` Krzysztof Kozlowski
2020-12-03  9:50         ` Krzysztof Kozlowski
2020-12-03  9:50           ` Krzysztof Kozlowski
2020-12-03 13:08           ` Stephan Gerhold
2020-12-03 13:08             ` Stephan Gerhold
2020-12-21  9:53 ` [PATCH v2 1/6] extcon: max8997: Add CHGINS and CHGRM interrupt handling Timon Baetz
2020-12-21  9:53   ` Timon Baetz
2020-12-21  9:53   ` [PATCH v2 2/6] power: supply: max8997_charger: Set CHARGER current limit Timon Baetz
2020-12-21  9:53     ` Timon Baetz
2020-12-21  9:59     ` Lee Jones
2020-12-21  9:59       ` Lee Jones
2020-12-21 14:16     ` Krzysztof Kozlowski
2020-12-21 14:16       ` Krzysztof Kozlowski
2020-12-21 15:35       ` Timon Baetz
2020-12-21 15:35         ` Timon Baetz
2020-12-21 15:43         ` Krzysztof Kozlowski
2020-12-21 15:43           ` Krzysztof Kozlowski
2020-12-21  9:53   ` [PATCH v2 3/6] ARM: dts: exynos: Fix charging regulator voltage and current for i9100 Timon Baetz
2020-12-21  9:53     ` Timon Baetz
2020-12-21 14:19     ` Krzysztof Kozlowski
2020-12-21 14:19       ` Krzysztof Kozlowski
2020-12-21  9:53   ` [PATCH v2 4/6] ARM: dts: exynos: Added muic and charger nodes " Timon Baetz
2020-12-21  9:53     ` Timon Baetz
2020-12-21 14:20     ` Krzysztof Kozlowski
2020-12-21 14:20       ` Krzysztof Kozlowski
2020-12-21  9:53   ` [PATCH v2 5/6] ARM: dts: exynos: Added top-off charging regulator node " Timon Baetz
2020-12-21  9:53     ` Timon Baetz
2020-12-21 14:23     ` Krzysztof Kozlowski
2020-12-21 14:23       ` Krzysztof Kozlowski
2020-12-21  9:53   ` [PATCH v2 6/6] regulator: dt-bindings: Document max8997-pmic nodes Timon Baetz
2020-12-21  9:53     ` Timon Baetz
2020-12-21 14:24     ` Krzysztof Kozlowski
2020-12-21 14:24       ` Krzysztof Kozlowski
2020-12-21 14:11   ` [PATCH v2 1/6] extcon: max8997: Add CHGINS and CHGRM interrupt handling Krzysztof Kozlowski
2020-12-21 14:11     ` Krzysztof Kozlowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201205085442.6ef557fc.timon.baetz@protonmail.com \
    --to=timon.baetz@protonmail.com \
    --cc=cw00.choi@samsung.com \
    --cc=devicetree@vger.kernel.org \
    --cc=kgene@kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.