All of lore.kernel.org
 help / color / mirror / Atom feed
From: Potin Lai <potin.lai.pt@gmail.com>
To: Billy Tsai <billy_tsai@aspeedtech.com>
Cc: jdelvare@suse.com, linux@roeck-us.net, robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, joel@jms.id.au,
	andrew@aj.id.au, corbet@lwn.net, thierry.reding@gmail.com,
	u.kleine-koenig@pengutronix.de, p.zabel@pengutronix.de,
	naresh.solanki@9elements.com, linux-hwmon@vger.kernel.org,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-pwm@vger.kernel.org,
	BMC-SW@aspeedtech.com, patrick@stwcx.xyz
Subject: Re: [PATCH v8 3/3] hwmon: (aspeed-g6-pwm-tacho): Support for ASPEED g6 PWM/Fan tach
Date: Fri, 1 Sep 2023 12:54:33 +0800	[thread overview]
Message-ID: <99ffd1fb-14ae-1c83-bc32-2d0aead4d696@gmail.com> (raw)
In-Reply-To: <20230830123202.3408318-4-billy_tsai@aspeedtech.com>



On 8/30/23 20:32, Billy Tsai wrote:
> +static int aspeed_tach_hwmon_write(struct device *dev,
> +				   enum hwmon_sensor_types type, u32 attr,
> +				   int channel, long val)
> +{
> +	struct aspeed_pwm_tach_data *priv = dev_get_drvdata(dev);
> +	u32 reg_val;
> +
> +	switch (attr) {
> +	case hwmon_fan_div:
> +		if (!is_power_of_2(val) || (ilog2(val) % 2) ||
> +		    DIV_TO_REG(val) > 0xb)
> +			return -EINVAL;
> +		priv->tach_divisor = val;
> +		reg_val = readl(priv->base + TACH_ASPEED_CTRL(channel));
> +		reg_val &= ~TACH_ASPEED_CLK_DIV_T_MASK;
> +		reg_val |= FIELD_GET(TACH_ASPEED_CLK_DIV_T_MASK,
> +				     DIV_TO_REG(priv->tach_divisor));
Hi Billy,
I notice the fanX_div is always shows 1 after I set 1024.
I think FIELD_GET() needs to replaced with FIELD_PREP().

> +		writel(reg_val, priv->base + TACH_ASPEED_CTRL(channel));
> +		break;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +
> +	return 0;
> +}


> +static void aspeed_present_fan_tach(struct aspeed_pwm_tach_data *priv, u32 tach_ch)
> +{
> +	u32 val;
> +
> +	priv->tach_present[tach_ch] = true;
> +	priv->tach_divisor = DEFAULT_TACH_DIV;
> +
> +	val = readl(priv->base + TACH_ASPEED_CTRL(tach_ch));
> +	val &= ~(TACH_ASPEED_INVERS_LIMIT | TACH_ASPEED_DEBOUNCE_MASK |
> +		 TACH_ASPEED_IO_EDGE_MASK | TACH_ASPEED_CLK_DIV_T_MASK |
> +		 TACH_ASPEED_THRESHOLD_MASK);
> +	val |= (DEBOUNCE_3_CLK << TACH_ASPEED_DEBOUNCE_BIT) | F2F_EDGES |
> +	       FIELD_GET(TACH_ASPEED_CLK_DIV_T_MASK,
> +			 DIV_TO_REG(priv->tach_divisor));
And here as well.

> +	writel(val, priv->base + TACH_ASPEED_CTRL(tach_ch));
> +
> +	aspeed_tach_ch_enable(priv, tach_ch, true);
> +}
> +
>


WARNING: multiple messages have this Message-ID (diff)
From: Potin Lai <potin.lai.pt@gmail.com>
To: Billy Tsai <billy_tsai@aspeedtech.com>
Cc: jdelvare@suse.com, linux@roeck-us.net, robh+dt@kernel.org,
	krzysztof.kozlowski+dt@linaro.org, joel@jms.id.au,
	andrew@aj.id.au, corbet@lwn.net, thierry.reding@gmail.com,
	u.kleine-koenig@pengutronix.de, p.zabel@pengutronix.de,
	naresh.solanki@9elements.com, linux-hwmon@vger.kernel.org,
	devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-aspeed@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	linux-doc@vger.kernel.org, linux-pwm@vger.kernel.org,
	BMC-SW@aspeedtech.com, patrick@stwcx.xyz
Subject: Re: [PATCH v8 3/3] hwmon: (aspeed-g6-pwm-tacho): Support for ASPEED g6 PWM/Fan tach
Date: Fri, 1 Sep 2023 12:54:33 +0800	[thread overview]
Message-ID: <99ffd1fb-14ae-1c83-bc32-2d0aead4d696@gmail.com> (raw)
In-Reply-To: <20230830123202.3408318-4-billy_tsai@aspeedtech.com>



On 8/30/23 20:32, Billy Tsai wrote:
> +static int aspeed_tach_hwmon_write(struct device *dev,
> +				   enum hwmon_sensor_types type, u32 attr,
> +				   int channel, long val)
> +{
> +	struct aspeed_pwm_tach_data *priv = dev_get_drvdata(dev);
> +	u32 reg_val;
> +
> +	switch (attr) {
> +	case hwmon_fan_div:
> +		if (!is_power_of_2(val) || (ilog2(val) % 2) ||
> +		    DIV_TO_REG(val) > 0xb)
> +			return -EINVAL;
> +		priv->tach_divisor = val;
> +		reg_val = readl(priv->base + TACH_ASPEED_CTRL(channel));
> +		reg_val &= ~TACH_ASPEED_CLK_DIV_T_MASK;
> +		reg_val |= FIELD_GET(TACH_ASPEED_CLK_DIV_T_MASK,
> +				     DIV_TO_REG(priv->tach_divisor));
Hi Billy,
I notice the fanX_div is always shows 1 after I set 1024.
I think FIELD_GET() needs to replaced with FIELD_PREP().

> +		writel(reg_val, priv->base + TACH_ASPEED_CTRL(channel));
> +		break;
> +	default:
> +		return -EOPNOTSUPP;
> +	}
> +
> +	return 0;
> +}


> +static void aspeed_present_fan_tach(struct aspeed_pwm_tach_data *priv, u32 tach_ch)
> +{
> +	u32 val;
> +
> +	priv->tach_present[tach_ch] = true;
> +	priv->tach_divisor = DEFAULT_TACH_DIV;
> +
> +	val = readl(priv->base + TACH_ASPEED_CTRL(tach_ch));
> +	val &= ~(TACH_ASPEED_INVERS_LIMIT | TACH_ASPEED_DEBOUNCE_MASK |
> +		 TACH_ASPEED_IO_EDGE_MASK | TACH_ASPEED_CLK_DIV_T_MASK |
> +		 TACH_ASPEED_THRESHOLD_MASK);
> +	val |= (DEBOUNCE_3_CLK << TACH_ASPEED_DEBOUNCE_BIT) | F2F_EDGES |
> +	       FIELD_GET(TACH_ASPEED_CLK_DIV_T_MASK,
> +			 DIV_TO_REG(priv->tach_divisor));
And here as well.

> +	writel(val, priv->base + TACH_ASPEED_CTRL(tach_ch));
> +
> +	aspeed_tach_ch_enable(priv, tach_ch, true);
> +}
> +
>


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

  reply	other threads:[~2023-09-01  4:56 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-30 12:31 [PATCH v8 0/3] Support pwm/tach driver for aspeed ast26xx Billy Tsai
2023-08-30 12:31 ` Billy Tsai
2023-08-30 12:32 ` [PATCH v8 1/3] dt-bindings: hwmon: fan: Add fan binding to schema Billy Tsai
2023-08-30 12:32   ` Billy Tsai
2023-09-05 17:00   ` Rob Herring
2023-09-05 17:00     ` Rob Herring
2023-09-07  7:17     ` Billy Tsai
2023-09-07  7:17       ` Billy Tsai
2023-09-07 19:43       ` Rob Herring
2023-09-07 19:43         ` Rob Herring
2023-09-08  8:49         ` Billy Tsai
2023-09-08  8:49           ` Billy Tsai
2023-09-12 15:11           ` Rob Herring
2023-09-12 15:11             ` Rob Herring
2023-08-30 12:32 ` [PATCH v8 2/3] dt-bindings: hwmon: Support Aspeed g6 PWM TACH Control Billy Tsai
2023-08-30 12:32   ` Billy Tsai
2023-09-05 17:07   ` Rob Herring
2023-09-05 17:07     ` Rob Herring
2023-09-07  7:24     ` Billy Tsai
2023-09-07  7:24       ` Billy Tsai
2023-08-30 12:32 ` [PATCH v8 3/3] hwmon: (aspeed-g6-pwm-tacho): Support for ASPEED g6 PWM/Fan tach Billy Tsai
2023-08-30 12:32   ` Billy Tsai
2023-09-01  4:54   ` Potin Lai [this message]
2023-09-01  4:54     ` Potin Lai
2023-09-01  5:10     ` Billy Tsai
2023-09-01  5:10       ` Billy Tsai

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=99ffd1fb-14ae-1c83-bc32-2d0aead4d696@gmail.com \
    --to=potin.lai.pt@gmail.com \
    --cc=BMC-SW@aspeedtech.com \
    --cc=andrew@aj.id.au \
    --cc=billy_tsai@aspeedtech.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=jdelvare@suse.com \
    --cc=joel@jms.id.au \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-aspeed@lists.ozlabs.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=naresh.solanki@9elements.com \
    --cc=p.zabel@pengutronix.de \
    --cc=patrick@stwcx.xyz \
    --cc=robh+dt@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /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.