summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-07-19 13:56:53 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2022-07-19 13:59:47 +0200
commite5b25ca94c294545a677905a1fb2c940eee84c67 (patch)
tree47b770b66635685bde228ee04fdbc574d4f29db3 /drivers
parent3838896d374929638bdb143dc33aee21931ef903 (diff)
downloadlinux-e5b25ca94c294545a677905a1fb2c940eee84c67.tar.bz2
Revert "platform/chrome: cros_typec_switch: Add event check"
This reverts commit bb53ad958012f5a8d88b3b7159c22b3b877601bb. The chrome platform driver changes need to come in through the platform tree due to some api changes that showed up there that cause build errors in linux-next Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Link: https://lore.kernel.org/r/20220719160821.5e68e30b@oak.ozlabs.ibm.com Cc: Prashant Malani <pmalani@chromium.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/platform/chrome/cros_typec_switch.c72
1 files changed, 2 insertions, 70 deletions
diff --git a/drivers/platform/chrome/cros_typec_switch.c b/drivers/platform/chrome/cros_typec_switch.c
index 7c01957a032d..b50ecedce662 100644
--- a/drivers/platform/chrome/cros_typec_switch.c
+++ b/drivers/platform/chrome/cros_typec_switch.c
@@ -7,8 +7,6 @@
*/
#include <linux/acpi.h>
-#include <linux/delay.h>
-#include <linux/jiffies.h>
#include <linux/module.h>
#include <linux/platform_data/cros_ec_commands.h>
#include <linux/platform_data/cros_ec_proto.h>
@@ -65,40 +63,6 @@ static int cros_typec_get_mux_state(unsigned long mode, struct typec_altmode *al
return ret;
}
-static int cros_typec_send_clear_event(struct cros_typec_switch_data *sdata, int port_num,
- u32 events_mask)
-{
- struct ec_params_typec_control req = {
- .port = port_num,
- .command = TYPEC_CONTROL_COMMAND_CLEAR_EVENTS,
- .clear_events_mask = events_mask,
- };
-
- return cros_ec_command(sdata->ec, 0, EC_CMD_TYPEC_CONTROL, &req,
- sizeof(req), NULL, 0);
-}
-
-static bool cros_typec_check_event(struct cros_typec_switch_data *sdata, int port_num, u32 mask)
-{
- struct ec_response_typec_status resp;
- struct ec_params_typec_status req = {
- .port = port_num,
- };
- int ret;
-
- ret = cros_ec_command(sdata->ec, 0, EC_CMD_TYPEC_STATUS, &req, sizeof(req),
- &resp, sizeof(resp));
- if (ret < 0) {
- dev_warn(sdata->dev, "EC_CMD_TYPEC_STATUS failed for port: %d\n", port_num);
- return false;
- }
-
- if (resp.events & mask)
- return true;
-
- return false;
-}
-
/*
* The Chrome EC treats both mode-switches and retimers as "muxes" for the purposes of the
* host command API. This common function configures and verifies the retimer/mode-switch
@@ -107,44 +71,12 @@ static bool cros_typec_check_event(struct cros_typec_switch_data *sdata, int por
static int cros_typec_configure_mux(struct cros_typec_switch_data *sdata, int port_num, int index,
unsigned long mode, struct typec_altmode *alt)
{
- unsigned long end;
- u32 event_mask;
- u8 mux_state;
- int ret;
-
- ret = cros_typec_get_mux_state(mode, alt);
- if (ret < 0)
- return ret;
- mux_state = (u8)ret;
+ int ret = cros_typec_get_mux_state(mode, alt);
- /* Clear any old mux set done event. */
- if (index == 0)
- event_mask = PD_STATUS_EVENT_MUX_0_SET_DONE;
- else
- event_mask = PD_STATUS_EVENT_MUX_1_SET_DONE;
-
- ret = cros_typec_send_clear_event(sdata, port_num, event_mask);
- if (ret < 0)
- return ret;
-
- /* Send the set command. */
- ret = cros_typec_cmd_mux_set(sdata, port_num, index, mux_state);
if (ret < 0)
return ret;
- /* Check for the mux set done event. */
- end = jiffies + msecs_to_jiffies(1000);
- do {
- if (cros_typec_check_event(sdata, port_num, event_mask))
- return 0;
-
- usleep_range(500, 1000);
- } while (time_before(jiffies, end));
-
- dev_err(sdata->dev, "Timed out waiting for mux set done on index: %d, state: %d\n",
- index, mux_state);
-
- return -ETIMEDOUT;
+ return cros_typec_cmd_mux_set(sdata, port_num, index, (u8)ret);
}
static int cros_typec_retimer_set(struct typec_retimer *retimer, struct typec_retimer_state *state)