Skip to content

Commit

Permalink
net: dsa: sja1105: replace sja1105_xfer_buf()
Browse files Browse the repository at this point in the history
Use dedicated sja1105_read_buf() and sja1105_write_buf() where
appropriate, and get rid of the bidirectional sja1105_xfer_buf().

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
  • Loading branch information
vladimiroltean committed Sep 6, 2024
1 parent c43a786 commit fe932ef
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 58 deletions.
7 changes: 4 additions & 3 deletions drivers/net/dsa/sja1105/sja1105.h
Original file line number Diff line number Diff line change
Expand Up @@ -324,9 +324,10 @@ int sja1105_devlink_info_get(struct dsa_switch *ds,
struct netlink_ext_ack *extack);

/* From sja1105_spi.c */
int sja1105_xfer_buf(const struct sja1105_private *priv,
sja1105_spi_rw_mode_t rw, u64 reg_addr,
u8 *buf, size_t len);
int sja1105_read_buf(const struct sja1105_private *priv, u64 reg_addr, u8 *buf,
size_t len);
int sja1105_write_buf(const struct sja1105_private *priv, u64 reg_addr,
const u8 *buf, size_t len);
int sja1105_read_u64(const struct sja1105_private *priv, u64 reg_addr,
u64 *value, struct ptp_system_timestamp *ptp_sts);
int sja1105_write_u64(const struct sja1105_private *priv, u64 reg_addr,
Expand Down
68 changes: 34 additions & 34 deletions drivers/net/dsa/sja1105/sja1105_clocking.c
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,8 @@ static int sja1105_cgu_idiv_config(struct sja1105_private *priv, int port,
idiv.pd = enabled ? 0 : 1; /* Power down? */
sja1105_cgu_idiv_packing(packed_buf, &idiv, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->cgu_idiv[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->cgu_idiv[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static void
Expand Down Expand Up @@ -184,8 +184,8 @@ static int sja1105_cgu_mii_tx_clk_config(struct sja1105_private *priv,
mii_tx_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &mii_tx_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->mii_tx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->mii_tx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int
Expand All @@ -211,8 +211,8 @@ sja1105_cgu_mii_rx_clk_config(struct sja1105_private *priv, int port)
mii_rx_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &mii_rx_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->mii_rx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->mii_rx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int
Expand All @@ -238,8 +238,8 @@ sja1105_cgu_mii_ext_tx_clk_config(struct sja1105_private *priv, int port)
mii_ext_tx_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &mii_ext_tx_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->mii_ext_tx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->mii_ext_tx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int
Expand All @@ -265,8 +265,8 @@ sja1105_cgu_mii_ext_rx_clk_config(struct sja1105_private *priv, int port)
mii_ext_rx_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &mii_ext_rx_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->mii_ext_rx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->mii_ext_rx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int sja1105_mii_clocking_setup(struct sja1105_private *priv, int port,
Expand Down Expand Up @@ -367,8 +367,8 @@ static int sja1105_cgu_rgmii_tx_clk_config(struct sja1105_private *priv,
txc.pd = 0;
sja1105_cgu_mii_control_packing(packed_buf, &txc, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->rgmii_tx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->rgmii_tx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

/* AGU */
Expand Down Expand Up @@ -418,8 +418,8 @@ static int sja1105_rgmii_cfg_pad_tx_config(struct sja1105_private *priv,
pad_mii_tx.clk_ipud = 2; /* TX_CLK input stage (default) */
sja1105_cfg_pad_mii_packing(packed_buf, &pad_mii_tx, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->pad_mii_tx[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->pad_mii_tx[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int sja1105_cfg_pad_rx_config(struct sja1105_private *priv, int port)
Expand Down Expand Up @@ -454,8 +454,8 @@ static int sja1105_cfg_pad_rx_config(struct sja1105_private *priv, int port)
/* plain input (default) */
sja1105_cfg_pad_mii_packing(packed_buf, &pad_mii_rx, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->pad_mii_rx[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->pad_mii_rx[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static void
Expand Down Expand Up @@ -532,8 +532,8 @@ int sja1105pqrs_setup_rgmii_delay(const void *ctx, int port)
pad_mii_id.txc_pd = 1;
sja1105_cfg_pad_mii_id_packing(packed_buf, &pad_mii_id, PACK);

rc = sja1105_xfer_buf(priv, SPI_WRITE, regs->pad_mii_id[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
rc = sja1105_write_buf(priv, regs->pad_mii_id[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
if (rc < 0)
return rc;

Expand All @@ -548,8 +548,8 @@ int sja1105pqrs_setup_rgmii_delay(const void *ctx, int port)
}
sja1105_cfg_pad_mii_id_packing(packed_buf, &pad_mii_id, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->pad_mii_id[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->pad_mii_id[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

int sja1110_setup_rgmii_delay(const void *ctx, int port)
Expand Down Expand Up @@ -579,8 +579,8 @@ int sja1110_setup_rgmii_delay(const void *ctx, int port)

sja1110_cfg_pad_mii_id_packing(packed_buf, &pad_mii_id, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->pad_mii_id[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->pad_mii_id[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int sja1105_rgmii_clocking_setup(struct sja1105_private *priv, int port,
Expand Down Expand Up @@ -660,8 +660,8 @@ static int sja1105_cgu_rmii_ref_clk_config(struct sja1105_private *priv,
ref_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &ref_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->rmii_ref_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->rmii_ref_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int
Expand All @@ -680,8 +680,8 @@ sja1105_cgu_rmii_ext_tx_clk_config(struct sja1105_private *priv, int port)
ext_tx_clk.pd = 0; /* Power Down off => enabled */
sja1105_cgu_mii_control_packing(packed_buf, &ext_tx_clk, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->rmii_ext_tx_clk[port],
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, regs->rmii_ext_tx_clk[port], packed_buf,
SJA1105_SIZE_CGU_CMD);
}

static int sja1105_cgu_rmii_pll_config(struct sja1105_private *priv)
Expand Down Expand Up @@ -712,8 +712,8 @@ static int sja1105_cgu_rmii_pll_config(struct sja1105_private *priv)
pll.pd = 0x1;

sja1105_cgu_pll_control_packing(packed_buf, &pll, PACK);
rc = sja1105_xfer_buf(priv, SPI_WRITE, regs->rmii_pll1, packed_buf,
SJA1105_SIZE_CGU_CMD);
rc = sja1105_write_buf(priv, regs->rmii_pll1, packed_buf,
SJA1105_SIZE_CGU_CMD);
if (rc < 0) {
dev_err(dev, "failed to configure PLL1 for 50MHz\n");
return rc;
Expand All @@ -723,8 +723,8 @@ static int sja1105_cgu_rmii_pll_config(struct sja1105_private *priv)
pll.pd = 0x0;

sja1105_cgu_pll_control_packing(packed_buf, &pll, PACK);
rc = sja1105_xfer_buf(priv, SPI_WRITE, regs->rmii_pll1, packed_buf,
SJA1105_SIZE_CGU_CMD);
rc = sja1105_write_buf(priv, regs->rmii_pll1, packed_buf,
SJA1105_SIZE_CGU_CMD);
if (rc < 0) {
dev_err(dev, "failed to enable PLL1\n");
return rc;
Expand Down Expand Up @@ -847,14 +847,14 @@ int sja1110_disable_microcontroller(struct sja1105_private *priv)
/* Power down the BASE_TIMER_CLK to disable the watchdog timer */
sja1110_cgu_outclk_packing(packed_buf, &outclk_7_c, PACK);

rc = sja1105_xfer_buf(priv, SPI_WRITE, SJA1110_BASE_TIMER_CLK,
packed_buf, SJA1105_SIZE_CGU_CMD);
rc = sja1105_write_buf(priv, SJA1110_BASE_TIMER_CLK, packed_buf,
SJA1105_SIZE_CGU_CMD);
if (rc)
return rc;

/* Power down the BASE_MCSS_CLOCK to gate the microcontroller off */
sja1110_cgu_outclk_packing(packed_buf, &outclk_6_c, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, SJA1110_BASE_MCSS_CLK,
packed_buf, SJA1105_SIZE_CGU_CMD);
return sja1105_write_buf(priv, SJA1110_BASE_MCSS_CLK, packed_buf,
SJA1105_SIZE_CGU_CMD);
}
9 changes: 3 additions & 6 deletions drivers/net/dsa/sja1105/sja1105_dynamic_config.c
Original file line number Diff line number Diff line change
Expand Up @@ -1184,8 +1184,7 @@ sja1105_dynamic_config_poll_valid(struct sja1105_private *priv,
int rc;

/* Read back the whole entry + command structure. */
rc = sja1105_xfer_buf(priv, SPI_READ, ops->addr, packed_buf,
ops->packed_size);
rc = sja1105_read_buf(priv, ops->addr, packed_buf, ops->packed_size);
if (rc)
return rc;

Expand Down Expand Up @@ -1298,8 +1297,7 @@ int sja1105_dynamic_config_read(struct sja1105_private *priv,

/* Send SPI write operation: read config table entry */
mutex_lock(&priv->dynamic_config_lock);
rc = sja1105_xfer_buf(priv, SPI_WRITE, ops->addr, packed_buf,
ops->packed_size);
rc = sja1105_write_buf(priv, ops->addr, packed_buf, ops->packed_size);
if (rc < 0)
goto out;

Expand Down Expand Up @@ -1357,8 +1355,7 @@ int sja1105_dynamic_config_write(struct sja1105_private *priv,

/* Send SPI write operation: read config table entry */
mutex_lock(&priv->dynamic_config_lock);
rc = sja1105_xfer_buf(priv, SPI_WRITE, ops->addr, packed_buf,
ops->packed_size);
rc = sja1105_write_buf(priv, ops->addr, packed_buf, ops->packed_size);
if (rc < 0)
goto out;

Expand Down
2 changes: 1 addition & 1 deletion drivers/net/dsa/sja1105/sja1105_ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -549,7 +549,7 @@ static int sja1105_port_counter_read(struct sja1105_private *priv, int port,

regs = priv->info->regs->stats[c->area][port];

rc = sja1105_xfer_buf(priv, SPI_READ, regs + c->offset, buf, size);
rc = sja1105_read_buf(priv, regs + c->offset, buf, size);
if (rc)
return rc;

Expand Down
2 changes: 1 addition & 1 deletion drivers/net/dsa/sja1105/sja1105_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -3269,7 +3269,7 @@ static int sja1105_check_device_id(struct sja1105_private *priv)
if (rc < 0)
return rc;

rc = sja1105_xfer_buf(priv, SPI_READ, regs->prod_id, prod_id,
rc = sja1105_read_buf(priv, regs->prod_id, prod_id,
SJA1105_SIZE_DEVICE_ID);
if (rc < 0)
return rc;
Expand Down
10 changes: 5 additions & 5 deletions drivers/net/dsa/sja1105/sja1105_ptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ int sja1105_ptp_cmd_read(struct dsa_switch *ds, struct sja1105_ptp_cmd *cmd)
u8 buf[SJA1105_SIZE_PTP_CMD] = {0};
int rc;

rc = sja1105_xfer_buf(priv, SPI_READ, regs->ptp_control, buf,
rc = sja1105_read_buf(priv, regs->ptp_control, buf,
SJA1105_SIZE_PTP_CMD);
if (rc)
return rc;
Expand All @@ -191,8 +191,8 @@ int sja1105_ptp_cmd_write(struct dsa_switch *ds,

priv->info->ptp_cmd_packing(buf, (struct sja1105_ptp_cmd *)cmd, PACK);

return sja1105_xfer_buf(priv, SPI_WRITE, regs->ptp_control, buf,
SJA1105_SIZE_PTP_CMD);
return sja1105_write_buf(priv, regs->ptp_control, buf,
SJA1105_SIZE_PTP_CMD);
}

/* The switch returns partial timestamps (24 bits for SJA1105 E/T, which wrap
Expand Down Expand Up @@ -265,8 +265,8 @@ static int sja1105_ptpegr_ts_poll(struct dsa_switch *ds, int port, u64 *ts)
int rc;

do {
rc = sja1105_xfer_buf(priv, SPI_READ, regs->ptpegr_ts[port],
packed_buf, priv->info->ptpegr_ts_bytes);
rc = sja1105_read_buf(priv, regs->ptpegr_ts[port], packed_buf,
priv->info->ptpegr_ts_bytes);
if (rc < 0)
return rc;

Expand Down
18 changes: 11 additions & 7 deletions drivers/net/dsa/sja1105/sja1105_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ static int sja1105_xfer(const struct sja1105_private *priv,
return 0;
}

int sja1105_xfer_buf(const struct sja1105_private *priv,
sja1105_spi_rw_mode_t rw, u64 reg_addr,
u8 *buf, size_t len)
int sja1105_read_buf(const struct sja1105_private *priv, u64 reg_addr, u8 *buf,
size_t len)
{
return sja1105_xfer(priv, rw, reg_addr, buf, len, NULL);
return sja1105_xfer(priv, SPI_READ, reg_addr, buf, len, NULL);
}

int sja1105_write_buf(const struct sja1105_private *priv, u64 reg_addr,
const u8 *buf, size_t len)
{
return sja1105_xfer(priv, SPI_WRITE, reg_addr, (u8 *)buf, len, NULL);
}

int sja1105_read_u64(const struct sja1105_private *priv, u64 reg_addr,
Expand Down Expand Up @@ -256,7 +261,7 @@ static int sja1105_status_get(struct sja1105_private *priv,
u8 packed_buf[4];
int rc;

rc = sja1105_xfer_buf(priv, SPI_READ, regs->status, packed_buf, 4);
rc = sja1105_read_buf(priv, regs->status, packed_buf, 4);
if (rc < 0)
return rc;

Expand Down Expand Up @@ -352,8 +357,7 @@ int sja1105_static_config_upload(struct sja1105_private *priv)
/* Wait for the switch to come out of reset */
usleep_range(1000, 5000);
/* Upload the static config to the device */
rc = sja1105_xfer_buf(priv, SPI_WRITE, regs->config,
config_buf, buf_len);
rc = sja1105_write_buf(priv, regs->config, config_buf, buf_len);
if (rc < 0) {
dev_err(dev, "Failed to upload config, retrying...\n");
continue;
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/dsa/sja1105/sja1105_vl.c
Original file line number Diff line number Diff line change
Expand Up @@ -778,7 +778,7 @@ int sja1105_vl_stats(struct sja1105_private *priv, int port,
if (vlid < 0)
return 0;

rc = sja1105_xfer_buf(priv, SPI_READ, regs->vl_status + 2 * vlid, buf,
rc = sja1105_read_buf(priv, regs->vl_status + 2 * vlid, buf,
SJA1105_SIZE_VL_STATUS);
if (rc) {
NL_SET_ERR_MSG_MOD(extack, "SPI access failed");
Expand Down

0 comments on commit fe932ef

Please sign in to comment.