* [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable
@ 2017-10-09 18:49 Heiner Kallweit
2017-10-09 18:52 ` [PATCH 2/3] firmware: arm_scpi: remove struct sensor_capabilities Heiner Kallweit
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Heiner Kallweit @ 2017-10-09 18:49 UTC (permalink / raw)
To: linux-arm-kernel
All callers of get_scpi_ops() depend on the result and therefore have
a Kconfig dependency on ARM_SCPI_PROTOCOL. Means that ARM_SCPI_PROTOCOL
being a module and caller being built-in can't occur.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
include/linux/scpi_protocol.h | 4 ----
1 file changed, 4 deletions(-)
diff --git a/include/linux/scpi_protocol.h b/include/linux/scpi_protocol.h
index 327d6566..d5eba00d 100644
--- a/include/linux/scpi_protocol.h
+++ b/include/linux/scpi_protocol.h
@@ -77,8 +77,4 @@ struct scpi_ops {
int (*device_set_power_state)(u16, u8);
};
-#if IS_REACHABLE(CONFIG_ARM_SCPI_PROTOCOL)
struct scpi_ops *get_scpi_ops(void);
-#else
-static inline struct scpi_ops *get_scpi_ops(void) { return NULL; }
-#endif
--
2.14.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/3] firmware: arm_scpi: remove struct sensor_capabilities
2017-10-09 18:49 [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Heiner Kallweit
@ 2017-10-09 18:52 ` Heiner Kallweit
2017-10-09 18:57 ` [PATCH 3/3] firmware: arm_scpi: use FIELD_GET/_PREP to simplify macro definitions Heiner Kallweit
2017-10-10 10:18 ` [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Sudeep Holla
2 siblings, 0 replies; 4+ messages in thread
From: Heiner Kallweit @ 2017-10-09 18:52 UTC (permalink / raw)
To: linux-arm-kernel
One more single-element struct was left, remove it.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/firmware/arm_scpi.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/firmware/arm_scpi.c b/drivers/firmware/arm_scpi.c
index dfb373c8..579941d5 100644
--- a/drivers/firmware/arm_scpi.c
+++ b/drivers/firmware/arm_scpi.c
@@ -331,10 +331,6 @@ struct dvfs_set {
u8 index;
} __packed;
-struct sensor_capabilities {
- __le16 sensors;
-} __packed;
-
struct _scpi_sensor_info {
__le16 sensor_id;
u8 class;
@@ -738,13 +734,13 @@ static int scpi_dvfs_add_opps_to_device(struct device *dev)
static int scpi_sensor_get_capability(u16 *sensors)
{
- struct sensor_capabilities cap_buf;
+ __le16 cap;
int ret;
- ret = scpi_send_message(CMD_SENSOR_CAPABILITIES, NULL, 0, &cap_buf,
- sizeof(cap_buf));
+ ret = scpi_send_message(CMD_SENSOR_CAPABILITIES, NULL, 0, &cap,
+ sizeof(cap));
if (!ret)
- *sensors = le16_to_cpu(cap_buf.sensors);
+ *sensors = le16_to_cpu(cap);
return ret;
}
--
2.14.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 3/3] firmware: arm_scpi: use FIELD_GET/_PREP to simplify macro definitions
2017-10-09 18:49 [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Heiner Kallweit
2017-10-09 18:52 ` [PATCH 2/3] firmware: arm_scpi: remove struct sensor_capabilities Heiner Kallweit
@ 2017-10-09 18:57 ` Heiner Kallweit
2017-10-10 10:18 ` [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Sudeep Holla
2 siblings, 0 replies; 4+ messages in thread
From: Heiner Kallweit @ 2017-10-09 18:57 UTC (permalink / raw)
To: linux-arm-kernel
Macro definitions can be simplified by making use of the FIELD_GET/_PREP
bitfield macros.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
drivers/firmware/arm_scpi.c | 38 +++++++++++++++-----------------------
1 file changed, 15 insertions(+), 23 deletions(-)
diff --git a/drivers/firmware/arm_scpi.c b/drivers/firmware/arm_scpi.c
index 579941d5..fc868d66 100644
--- a/drivers/firmware/arm_scpi.c
+++ b/drivers/firmware/arm_scpi.c
@@ -46,27 +46,19 @@
#include <linux/sort.h>
#include <linux/spinlock.h>
-#define CMD_ID_SHIFT 0
-#define CMD_ID_MASK 0x7f
-#define CMD_TOKEN_ID_SHIFT 8
-#define CMD_TOKEN_ID_MASK 0xff
-#define CMD_DATA_SIZE_SHIFT 16
-#define CMD_DATA_SIZE_MASK 0x1ff
-#define CMD_LEGACY_DATA_SIZE_SHIFT 20
-#define CMD_LEGACY_DATA_SIZE_MASK 0x1ff
-#define PACK_SCPI_CMD(cmd_id, tx_sz) \
- ((((cmd_id) & CMD_ID_MASK) << CMD_ID_SHIFT) | \
- (((tx_sz) & CMD_DATA_SIZE_MASK) << CMD_DATA_SIZE_SHIFT))
-#define ADD_SCPI_TOKEN(cmd, token) \
- ((cmd) |= (((token) & CMD_TOKEN_ID_MASK) << CMD_TOKEN_ID_SHIFT))
-#define PACK_LEGACY_SCPI_CMD(cmd_id, tx_sz) \
- ((((cmd_id) & CMD_ID_MASK) << CMD_ID_SHIFT) | \
- (((tx_sz) & CMD_LEGACY_DATA_SIZE_MASK) << CMD_LEGACY_DATA_SIZE_SHIFT))
-
-#define CMD_SIZE(cmd) (((cmd) >> CMD_DATA_SIZE_SHIFT) & CMD_DATA_SIZE_MASK)
-#define CMD_LEGACY_SIZE(cmd) (((cmd) >> CMD_LEGACY_DATA_SIZE_SHIFT) & \
- CMD_LEGACY_DATA_SIZE_MASK)
-#define CMD_UNIQ_MASK (CMD_TOKEN_ID_MASK << CMD_TOKEN_ID_SHIFT | CMD_ID_MASK)
+#define CMD_ID_MASK GENMASK(6, 0)
+#define CMD_TOKEN_ID_MASK GENMASK(15, 8)
+#define CMD_DATA_SIZE_MASK GENMASK(24, 16)
+#define CMD_LEGACY_DATA_SIZE_MASK GENMASK(28, 20)
+#define PACK_SCPI_CMD(cmd_id, tx_sz) \
+ (FIELD_PREP(CMD_ID_MASK, cmd_id) | \
+ FIELD_PREP(CMD_DATA_SIZE_MASK, tx_sz))
+#define PACK_LEGACY_SCPI_CMD(cmd_id, tx_sz) \
+ (FIELD_PREP(CMD_ID_MASK, cmd_id) | \
+ FIELD_PREP(CMD_LEGACY_DATA_SIZE_MASK, tx_sz))
+
+#define CMD_SIZE(cmd) FIELD_GET(CMD_DATA_SIZE_MASK, cmd)
+#define CMD_UNIQ_MASK (CMD_TOKEN_ID_MASK | CMD_ID_MASK)
#define CMD_XTRACT_UNIQ(cmd) ((cmd) & CMD_UNIQ_MASK)
#define SCPI_SLOT 0
@@ -412,7 +404,7 @@ static void scpi_process_cmd(struct scpi_chan *ch, u32 cmd)
} else {
struct scpi_shared_mem __iomem *mem = ch->rx_payload;
- len = min(match->rx_len, CMD_SIZE(cmd));
+ len = min_t(unsigned int, match->rx_len, CMD_SIZE(cmd));
match->status = ioread32(&mem->status);
memcpy_fromio(match->rx_buf, mem->payload, len);
@@ -454,7 +446,7 @@ static void scpi_tx_prepare(struct mbox_client *c, void *msg)
if (t->rx_buf) {
if (!(++ch->token))
++ch->token;
- ADD_SCPI_TOKEN(t->cmd, ch->token);
+ t->cmd |= FIELD_PREP(CMD_TOKEN_ID_MASK, ch->token);
spin_lock_irqsave(&ch->rx_lock, flags);
list_add_tail(&t->node, &ch->rx_pending);
spin_unlock_irqrestore(&ch->rx_lock, flags);
--
2.14.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable
2017-10-09 18:49 [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Heiner Kallweit
2017-10-09 18:52 ` [PATCH 2/3] firmware: arm_scpi: remove struct sensor_capabilities Heiner Kallweit
2017-10-09 18:57 ` [PATCH 3/3] firmware: arm_scpi: use FIELD_GET/_PREP to simplify macro definitions Heiner Kallweit
@ 2017-10-10 10:18 ` Sudeep Holla
2 siblings, 0 replies; 4+ messages in thread
From: Sudeep Holla @ 2017-10-10 10:18 UTC (permalink / raw)
To: linux-arm-kernel
On 09/10/17 19:49, Heiner Kallweit wrote:
> All callers of get_scpi_ops() depend on the result and therefore have
> a Kconfig dependency on ARM_SCPI_PROTOCOL. Means that ARM_SCPI_PROTOCOL
> being a module and caller being built-in can't occur.
>
I just sent PR for v4.15 yesterday, so this needs to wait until v4.16. I
will take a look this before that.
--
Regards,
Sudeep
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-10-10 10:18 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-09 18:49 [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Heiner Kallweit
2017-10-09 18:52 ` [PATCH 2/3] firmware: arm_scpi: remove struct sensor_capabilities Heiner Kallweit
2017-10-09 18:57 ` [PATCH 3/3] firmware: arm_scpi: use FIELD_GET/_PREP to simplify macro definitions Heiner Kallweit
2017-10-10 10:18 ` [PATCH 1/3] firmware: arm_scpi: remove default for get_scpi_ops if not reachable Sudeep Holla
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.