Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix driver optoe twoaddr a2h read write bug #434

Open
wants to merge 1 commit into
base: 202012
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions patch/0001-fix-driver-optoe-twoaddr-a2h-read-write-bug.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
From 3e289806e5d3c45c6afc2a6caeb935828a5032eb Mon Sep 17 00:00:00 2001
From: "Song,Qinghua" <[email protected]>
songqh2022 marked this conversation as resolved.
Show resolved Hide resolved
Date: Fri, 20 Sep 2024 19:32:52 +0800
Subject: [PATCH] fix driver optoe twoaddr a2h read/write bug

songqh2022 marked this conversation as resolved.
Show resolved Hide resolved
Signed-off-by: Qinghua Song <[email protected]>
---
drivers/misc/eeprom/optoe.c | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/drivers/misc/eeprom/optoe.c b/drivers/misc/eeprom/optoe.c
index 16287fdc5..a277cc28c 100644
--- a/drivers/misc/eeprom/optoe.c
+++ b/drivers/misc/eeprom/optoe.c
@@ -284,7 +284,6 @@ static uint8_t optoe_translate_offset(struct optoe_data *optoe,
if (optoe->dev_class == TWO_ADDR) {
if (*offset > 255) {
/* like QSFP, but shifted to client[1] */
- *client = optoe->client[1];
*offset -= 256;
}
}
@@ -304,6 +303,26 @@ static uint8_t optoe_translate_offset(struct optoe_data *optoe,

return page; /* note also returning client and offset */
}
+static void optoe_update_client(struct optoe_data *optoe, loff_t *offset, struct i2c_client **client)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use the Linux kernel coding style. Mainly please use tabs.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have used the Linux kernel coding style-use tabs,please help to check again,thank you!

+{
+ /* if SFP style, offset > 255, shift to i2c addr 0x51 */
+ if (optoe->dev_class == TWO_ADDR) {
+ if (*offset > 255) {
+ *client = optoe->client[1];
+ } else {
+ *client = optoe->client[0];
+ }
+ }
+ return;
+}
+
+static void optoe_reset_client(struct optoe_data *optoe, loff_t *offset, struct i2c_client **client)
+{
+ *client = optoe->client[0];
+
+ return;
+}
+

static ssize_t optoe_eeprom_read(struct optoe_data *optoe,
struct i2c_client *client,
@@ -529,6 +548,8 @@ static ssize_t optoe_eeprom_update_client(struct optoe_data *optoe,
return ret;
}
}
+
+ optoe_update_client(optoe, &off, &client);

while (count) {
ssize_t status;
@@ -551,7 +572,8 @@ static ssize_t optoe_eeprom_update_client(struct optoe_data *optoe,
retval += status;
}

-
+ optoe_reset_client(optoe, &off, &client);
+
if (page > 0) {
/* return the page register to page 0 (why?) */
page = 0;
--
2.25.1

3 changes: 3 additions & 0 deletions patch/series
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ cisco-npu-disable-other-bars.patch
#
# Marvell platform patches for 4.19
armhf_secondary_boot_online.patch

# optoe patches
0001-fix-driver-optoe-twoaddr-a2h-read-write-bug.patch
############################################################
#
# Internal patches will be added below (placeholder)
Expand Down