All of lore.kernel.org
 help / color / mirror / Atom feed
From: Krzysztof Kozlowski <krzk@kernel.org>
To: "Dzmitry Sankouski" <dsankouski@gmail.com>,
	"Sebastian Reichel" <sre@kernel.org>,
	"Bjorn Andersson" <andersson@kernel.org>,
	"Michael Turquette" <mturquette@baylibre.com>,
	"Stephen Boyd" <sboyd@kernel.org>,
	"Neil Armstrong" <neil.armstrong@linaro.org>,
	"Jessica Zhang" <quic_jesszhan@quicinc.com>,
	"Sam Ravnborg" <sam@ravnborg.org>,
	"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
	"Maxime Ripard" <mripard@kernel.org>,
	"Thomas Zimmermann" <tzimmermann@suse.de>,
	"David Airlie" <airlied@gmail.com>,
	"Daniel Vetter" <daniel@ffwll.ch>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Lee Jones" <lee@kernel.org>,
	"Dmitry Torokhov" <dmitry.torokhov@gmail.com>,
	"Pavel Machek" <pavel@ucw.cz>,
	"Liam Girdwood" <lgirdwood@gmail.com>,
	"Mark Brown" <broonie@kernel.org>,
	"Uwe Kleine-König" <ukleinek@kernel.org>,
	"Konrad Dybcio" <konrad.dybcio@linaro.org>,
	"Chanwoo Choi" <cw00.choi@samsung.com>,
	phone-devel@vger.kernel.org
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org,
	dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org,
	linux-input@vger.kernel.org, linux-leds@vger.kernel.org,
	linux-pwm@vger.kernel.org, linux-samsung-soc@vger.kernel.org
Subject: Re: [PATCH v3 13/23] input: add max77705 haptic driver
Date: Thu, 20 Jun 2024 18:04:57 +0200	[thread overview]
Message-ID: <da34df13-bc57-4142-b558-88a6628d8b81@kernel.org> (raw)
In-Reply-To: <20240618-starqltechn_integration_upstream-v3-13-e3f6662017ac@gmail.com>

On 18/06/2024 15:59, Dzmitry Sankouski wrote:
> Add support for haptic controller on MAX77705 Multifunction
> device.
> 
> This driver supports external pwm and LRA (Linear Resonant Actuator) motor.
> User can control the haptic device via force feedback framework.
> 
> Signed-off-by: Dzmitry Sankouski <dsankouski@gmail.com>
> ---

> +static int max77705_haptic_bias(struct max77705_haptic *haptic, bool on)
> +{
> +	int error;
> +
> +	error = regmap_update_bits(haptic->regmap_haptic,
> +							   MAX77705_PMIC_REG_MAINCTRL1,
> +							   MAX77705_MAINCTRL1_BIASEN_MASK,
> +							   on << MAX77705_MAINCTRL1_BIASEN_SHIFT);
> +
> +	if (error) {
> +		dev_err(haptic->dev, "failed to %s bias: %d\n",
> +			on ? "enable" : "disable", error);
> +		return error;
> +	}
> +
> +	return 0;
> +}
> +
> +static int max77705_haptic_configure(struct max77705_haptic *haptic,
> +				     bool enable)
> +{
> +	unsigned int value, config_reg;
> +	int error;
> +
> +	value = ((haptic->type << MAX77705_CONFIG2_MODE_SHIFT) |
> +		(enable << MAX77705_CONFIG2_MEN_SHIFT) |
> +		(haptic->mode << MAX77705_CONFIG2_HTYP_SHIFT) |
> +		MAX77705_HAPTIC_PWM_DIVISOR_128);
> +	config_reg = MAX77705_PMIC_REG_MCONFIG;
> +
> +	error = regmap_write(haptic->regmap_haptic,
> +			     config_reg, value);
> +	if (error) {
> +		dev_err(haptic->dev,
> +			"failed to update haptic config: %d\n", error);
> +		return error;
> +	}
> +
> +	return 0;
> +}
> +
> +static void max77705_haptic_enable(struct max77705_haptic *haptic)
> +{
> +	int error;
> +
> +	if (haptic->enabled)
> +		return;
> +
> +	error = pwm_enable(haptic->pwm_dev);
> +	if (error) {
> +		dev_err(haptic->dev,
> +			"failed to enable haptic pwm device: %d\n", error);
> +		return;
> +	}
> +
> +	error = max77705_haptic_configure(haptic, true);
> +	if (error)
> +		goto err_enable_config;
> +
> +	haptic->enabled = true;
> +
> +	return;
> +
> +err_enable_config:
> +	pwm_disable(haptic->pwm_dev);
> +}
> +
> +static void max77705_haptic_disable(struct max77705_haptic *haptic)
> +{
> +	int error;
> +
> +	if (!haptic->enabled)
> +		return;
> +
> +	error = max77705_haptic_configure(haptic, false);
> +	if (error)
> +		return;
> +
> +	pwm_disable(haptic->pwm_dev);
> +	haptic->enabled = false;
> +}
> +
> +static void max77705_haptic_play_work(struct work_struct *work)
> +{
> +	struct max77705_haptic *haptic =
> +			container_of(work, struct max77705_haptic, work);
> +	int error;
> +
> +	error = max77705_haptic_set_duty_cycle(haptic);
> +	if (error) {
> +		dev_err(haptic->dev, "failed to set duty cycle: %d\n", error);
> +		return;
> +	}
> +
> +	if (haptic->magnitude)
> +		max77705_haptic_enable(haptic);
> +	else
> +		max77705_haptic_disable(haptic);
> +}
> +
> +static int max77705_haptic_play_effect(struct input_dev *dev, void *data,
> +				       struct ff_effect *effect)
> +{
> +	struct max77705_haptic *haptic = input_get_drvdata(dev);
> +	struct pwm_args pargs;
> +	u64 period_mag_multi;
> +
> +	haptic->magnitude = effect->u.rumble.strong_magnitude;
> +	if (!haptic->magnitude)
> +		haptic->magnitude = effect->u.rumble.weak_magnitude;
> +
> +	/*
> +	 * The magnitude comes from force-feedback interface.
> +	 * The formula to convert magnitude to pwm_duty as follows:
> +	 * - pwm_duty = (magnitude * pwm_period) / MAX_MAGNITUDE(0xFFFF)
> +	 */
> +	pr_info("magnitude: %d(%x)", haptic->magnitude, haptic->magnitude);

Do not use pr_xxx in your drivers. That's a generic comment so please
apply it everywhere. Anyway driver should be silent.


> +	pwm_get_args(haptic->pwm_dev, &pargs);
> +	period_mag_multi = (u64)pargs.period * haptic->magnitude;
> +	haptic->pwm_duty = (unsigned int)(period_mag_multi >>
> +						MAX_MAGNITUDE_SHIFT);
> +
> +	schedule_work(&haptic->work);
> +
> +	return 0;
> +}


> +
> +static DEFINE_SIMPLE_DEV_PM_OPS(max77705_haptic_pm_ops,
> +				max77705_haptic_suspend,
> +				max77705_haptic_resume);
> +
> +static const struct of_device_id of_max77705_haptic_dt_match[] = {
> +	{ .compatible = "maxim,max77705-haptic", },
> +	{ /* sentinel */ },
> +};
> +MODULE_DEVICE_TABLE(of, of_max77705_haptic_dt_match);
> +
> +static struct platform_driver max77705_haptic_driver = {
> +	.driver		= {
> +		.name	= "max77705-haptic",
> +		.pm	= pm_sleep_ptr(&max77705_haptic_pm_ops),
> +		.of_match_table = of_max77705_haptic_dt_match,
> +	},
> +	.probe		= max77705_haptic_probe,
> +	.remove_new	= max77705_haptic_remove,
> +};
> +module_platform_driver(max77705_haptic_driver);
> +
> +MODULE_AUTHOR("Dzmitry Sankouski <dsankouski@gmail.com>");
> +MODULE_AUTHOR("Jaewon Kim <jaewon02.kim@samsung.com>");
> +MODULE_AUTHOR("Krzysztof Kozlowski <krzk@kernel.org>");

I doubt that this driver is needed. Everything is copy of max777693.


Best regards,
Krzysztof


  reply	other threads:[~2024-06-20 16:05 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-18 13:59 [PATCH v3 00/23] This is continued work on Samsung S9(SM-9600) starqltechn Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 01/23] power: supply: add undervoltage health status property Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 02/23] gcc-sdm845: Add rates to the GP clocks Dzmitry Sankouski
2024-06-18 17:50   ` Dmitry Baryshkov
2024-06-18 18:50     ` Konrad Dybcio
2024-06-18 18:55       ` Dmitry Baryshkov
2024-06-18 19:11         ` Konrad Dybcio
2024-06-19  6:31           ` Dmitry Baryshkov
2024-08-12 15:16             ` Dzmitry Sankouski
2024-08-12 18:08               ` Stephen Boyd
2024-07-19  9:01           ` Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 03/23] dt-bindings: panel: add Samsung s6e3ha8 Dzmitry Sankouski
2024-06-20 15:44   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 04/23] dt-bindings: mfd: add maxim,max77705 Dzmitry Sankouski
2024-06-18 16:53   ` Rob Herring (Arm)
2024-06-20 15:45   ` Krzysztof Kozlowski
2024-09-13 14:51     ` Dzmitry Sankouski
2024-09-13 16:47       ` Conor Dooley
2024-06-18 13:59 ` [PATCH v3 05/23] dt-bindings: input: add maxim,max77705-haptic Dzmitry Sankouski
2024-06-20 15:47   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 06/23] dt-bindings: power: supply: add maxim,max77705 charger Dzmitry Sankouski
2024-06-20 15:47   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 07/23] dt-bindings: power: supply: add maxim,max77705 Dzmitry Sankouski
2024-06-18 16:53   ` Rob Herring (Arm)
2024-06-20 16:14   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 08/23] dt-bindings: led: add maxim,max77705-leds Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 09/23] dt-bindings: mfd: add samsung,s2dos05 Dzmitry Sankouski
2024-06-18 16:53   ` Rob Herring (Arm)
2024-06-20 15:49   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 10/23] dt-bindings: regulator: " Dzmitry Sankouski
2024-06-20 15:51   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 11/23] drm/panel: Add support for S6E3HA8 panel driver Dzmitry Sankouski
2024-06-18 18:39   ` Dmitry Baryshkov
2024-06-19 13:27     ` Dzmitry Sankouski
2024-06-20 20:13       ` Dmitry Baryshkov
2024-06-18 13:59 ` [PATCH v3 12/23] mfd: Add new driver for MAX77705 PMIC Dzmitry Sankouski
2024-06-20 16:02   ` Krzysztof Kozlowski
2024-06-21 16:16   ` kernel test robot
2024-06-21 23:51   ` kernel test robot
2024-06-18 13:59 ` [PATCH v3 13/23] input: add max77705 haptic driver Dzmitry Sankouski
2024-06-20 16:04   ` Krzysztof Kozlowski [this message]
2024-06-18 13:59 ` [PATCH v3 14/23] power: supply: max77705: Add charger driver for Maxim 77705 Dzmitry Sankouski
2024-06-20 16:06   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 15/23] power: supply: max77705: Add fuel gauge " Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 16/23] leds: max77705: Add LEDs support Dzmitry Sankouski
2024-06-20 20:14   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 17/23] mfd: add s2dos series core driver Dzmitry Sankouski
2024-06-20 16:07   ` Krzysztof Kozlowski
2024-06-21 20:33   ` kernel test robot
2024-06-18 13:59 ` [PATCH v3 18/23] regulator: add s2dos05 regulator support Dzmitry Sankouski
2024-06-18 14:08   ` Mark Brown
2024-06-19 15:49     ` Dzmitry Sankouski
2024-06-19 15:52       ` Mark Brown
2024-06-19 13:26   ` kernel test robot
2024-06-20 16:08   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 19/23] power: supply: s2dos05: Add fuel gauge driver for s2dos05 Dzmitry Sankouski
2024-06-20 16:11   ` Krzysztof Kozlowski
2024-06-18 13:59 ` [PATCH v3 20/23] arm64: dts: qcom: starqltechn: remove wifi Dzmitry Sankouski
2024-06-18 14:06   ` Konrad Dybcio
2024-06-18 13:59 ` [PATCH v3 21/23] arm64: dts: qcom: starqltechn: remove framebuffer Dzmitry Sankouski
2024-06-18 14:06   ` Konrad Dybcio
2024-06-18 13:59 ` [PATCH v3 22/23] arm64: dts: qcom: starqltechn: fix usb regulator mistake Dzmitry Sankouski
2024-06-18 14:07   ` Konrad Dybcio
2024-06-18 14:16     ` Dzmitry Sankouski
2024-06-18 13:59 ` [PATCH v3 23/23] arm64: dts: qcom: starqltechn: add new features Dzmitry Sankouski
2024-06-18 14:12   ` Konrad Dybcio
2024-07-08 15:54     ` Dzmitry Sankouski
2024-07-08 18:08       ` Konrad Dybcio

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=da34df13-bc57-4142-b558-88a6628d8b81@kernel.org \
    --to=krzk@kernel.org \
    --cc=airlied@gmail.com \
    --cc=andersson@kernel.org \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=cw00.choi@samsung.com \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dmitry.torokhov@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=dsankouski@gmail.com \
    --cc=konrad.dybcio@linaro.org \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-samsung-soc@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=neil.armstrong@linaro.org \
    --cc=pavel@ucw.cz \
    --cc=phone-devel@vger.kernel.org \
    --cc=quic_jesszhan@quicinc.com \
    --cc=robh@kernel.org \
    --cc=sam@ravnborg.org \
    --cc=sboyd@kernel.org \
    --cc=sre@kernel.org \
    --cc=tzimmermann@suse.de \
    --cc=ukleinek@kernel.org \
    /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.