tristate "Fairchild FUSB302 Type-C chip driver"
depends on I2C
depends on EXTCON || !EXTCON
+ depends on DRM || DRM=n
+ select DRM_AUX_HPD_BRIDGE if DRM_BRIDGE && OF
help
The Fairchild FUSB302 Type-C chip driver that works with
Type-C Port Controller Manager to provide USB PD and USB
* Fairchild FUSB302 Type-C Chip Driver
*/
+#include <drm/bridge/aux-bridge.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
#include <linux/errno.h>
{
struct fusb302_chip *chip;
struct i2c_adapter *adapter = client->adapter;
+ struct auxiliary_device *bridge_dev;
struct device *dev = &client->dev;
const char *name;
int ret = 0;
goto destroy_workqueue;
}
+ bridge_dev = devm_drm_dp_hpd_bridge_alloc(chip->dev, to_of_node(chip->tcpc_dev.fwnode));
+ if (IS_ERR(bridge_dev)) {
+ ret = PTR_ERR(bridge_dev);
+ dev_err_probe(chip->dev, ret, "failed to alloc bridge\n");
+ goto destroy_workqueue;
+ }
+
chip->tcpm_port = tcpm_register_port(&client->dev, &chip->tcpc_dev);
if (IS_ERR(chip->tcpm_port)) {
fwnode_handle_put(chip->tcpc_dev.fwnode);
enable_irq_wake(chip->gpio_int_n_irq);
i2c_set_clientdata(client, chip);
+ ret = devm_drm_dp_hpd_bridge_add(chip->dev, bridge_dev);
+ if (ret)
+ return ret;
+
return ret;
tcpm_unregister_port: