Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 897d341d authored by Prameela Rani Garnepudi's avatar Prameela Rani Garnepudi Committed by Kalle Valo
Browse files

rsi: Changes to sdio reads and writes



SDIO read or write maximum size is limited to 2^16. This is done to make
the host interface operations common for SDIO and USB.

Signed-off-by: default avatarPrameela Rani Garnepudi <prameela.j04cs@gmail.com>
Signed-off-by: default avatarAmitkumar Karwar <amit.karwar@redpinesignals.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent d7af6bb7
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -487,8 +487,8 @@ void rsi_sdio_ack_intr(struct rsi_hw *adapter, u8 int_bit)
 */
 */
static int rsi_sdio_read_register_multiple(struct rsi_hw *adapter,
static int rsi_sdio_read_register_multiple(struct rsi_hw *adapter,
					   u32 addr,
					   u32 addr,
					   u32 count,
					   u8 *data,
					   u8 *data)
					   u16 count)
{
{
	struct rsi_91x_sdiodev *dev =
	struct rsi_91x_sdiodev *dev =
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
@@ -518,7 +518,7 @@ static int rsi_sdio_read_register_multiple(struct rsi_hw *adapter,
int rsi_sdio_write_register_multiple(struct rsi_hw *adapter,
int rsi_sdio_write_register_multiple(struct rsi_hw *adapter,
				     u32 addr,
				     u32 addr,
				     u8 *data,
				     u8 *data,
				     u32 count)
				     u16 count)
{
{
	struct rsi_91x_sdiodev *dev =
	struct rsi_91x_sdiodev *dev =
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
@@ -614,8 +614,8 @@ int rsi_sdio_host_intf_read_pkt(struct rsi_hw *adapter,


	status = rsi_sdio_read_register_multiple(adapter,
	status = rsi_sdio_read_register_multiple(adapter,
						 length,
						 length,
						 length, /*num of bytes*/
						 (u8 *)pkt,
						 (u8 *)pkt);
						 length); /*num of bytes*/


	if (status)
	if (status)
		rsi_dbg(ERR_ZONE, "%s: Failed to read frame: %d\n", __func__,
		rsi_dbg(ERR_ZONE, "%s: Failed to read frame: %d\n", __func__,
+4 −4
Original line number Original line Diff line number Diff line
@@ -75,13 +75,13 @@ static int rsi_sdio_master_access_msword(struct rsi_hw *adapter,
static int rsi_copy_to_card(struct rsi_common *common,
static int rsi_copy_to_card(struct rsi_common *common,
			    const u8 *fw,
			    const u8 *fw,
			    u32 len,
			    u32 len,
			    u32 num_blocks)
			    u16 num_blocks)
{
{
	struct rsi_hw *adapter = common->priv;
	struct rsi_hw *adapter = common->priv;
	struct rsi_91x_sdiodev *dev =
	struct rsi_91x_sdiodev *dev =
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
	u32 indx, ii;
	u32 indx, ii;
	u32 block_size = dev->tx_blk_size;
	u16 block_size = dev->tx_blk_size;
	u32 lsb_address;
	u32 lsb_address;
	__le32 data[] = { TA_HOLD_THREAD_VALUE, TA_SOFT_RST_CLR,
	__le32 data[] = { TA_HOLD_THREAD_VALUE, TA_SOFT_RST_CLR,
			  TA_PC_ZERO, TA_RELEASE_THREAD_VALUE };
			  TA_PC_ZERO, TA_RELEASE_THREAD_VALUE };
@@ -171,10 +171,10 @@ static int rsi_load_ta_instructions(struct rsi_common *common)
	struct rsi_91x_sdiodev *dev =
	struct rsi_91x_sdiodev *dev =
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
		(struct rsi_91x_sdiodev *)adapter->rsi_dev;
	u32 len;
	u32 len;
	u32 num_blocks;
	u16 num_blocks;
	const u8 *fw;
	const u8 *fw;
	const struct firmware *fw_entry = NULL;
	const struct firmware *fw_entry = NULL;
	u32 block_size = dev->tx_blk_size;
	u16 block_size = dev->tx_blk_size;
	int status = 0;
	int status = 0;
	u32 base_address;
	u32 base_address;
	u16 msb_address;
	u16 msb_address;
+2 −2
Original line number Original line Diff line number Diff line
@@ -110,7 +110,7 @@ struct rsi_91x_sdiodev {
	u8 sdio_clock_speed;
	u8 sdio_clock_speed;
	u32 cardcapability;
	u32 cardcapability;
	u8 prev_desc[16];
	u8 prev_desc[16];
	u32 tx_blk_size;
	u16 tx_blk_size;
	u8 write_fail;
	u8 write_fail;
};
};


@@ -122,7 +122,7 @@ int rsi_sdio_host_intf_read_pkt(struct rsi_hw *adapter, u8 *pkt, u32 length);
int rsi_sdio_write_register(struct rsi_hw *adapter, u8 function,
int rsi_sdio_write_register(struct rsi_hw *adapter, u8 function,
			    u32 addr, u8 *data);
			    u32 addr, u8 *data);
int rsi_sdio_write_register_multiple(struct rsi_hw *adapter, u32 addr,
int rsi_sdio_write_register_multiple(struct rsi_hw *adapter, u32 addr,
				     u8 *data, u32 count);
				     u8 *data, u16 count);
void rsi_sdio_ack_intr(struct rsi_hw *adapter, u8 int_bit);
void rsi_sdio_ack_intr(struct rsi_hw *adapter, u8 int_bit);
int rsi_sdio_determine_event_timeout(struct rsi_hw *adapter);
int rsi_sdio_determine_event_timeout(struct rsi_hw *adapter);
int rsi_sdio_read_buffer_status_register(struct rsi_hw *adapter, u8 q_num);
int rsi_sdio_read_buffer_status_register(struct rsi_hw *adapter, u8 q_num);