// SPDX-License-Identifier: GPL-2.0-or-later /* * maxim-max96789.c -- I2C register interface access for max96789 serdes chip * * Copyright (c) 2023-2028 Rockchip Electronics Co. Ltd. * * Author: luowei */ #include #include "maxim-max96789.h" int max96789_bridge_init(struct serdes *serdes) { return 0; } static bool max96789_bridge_detect(struct serdes *serdes) { u32 val; if (dm_gpio_is_valid(&serdes->lock_gpio)) { if (!dm_gpio_get_value(&serdes->lock_gpio)) return false; } if (serdes_reg_read(serdes, 0x0013, &val)) return false; if (!FIELD_GET(LOCKED, val)) return false; return true; } static int max96789_bridge_enable(struct serdes *serdes) { int ret = 0; SERDES_DBG_CHIP("%s: serdes chip %s ret=%d\n", __func__, serdes->chip_data->name, ret); return ret; } static int max96789_bridge_disable(struct serdes *serdes) { int ret = 0; ret = serdes_set_bits(serdes, 0x0002, VID_TX_EN_X, FIELD_PREP(VID_TX_EN_X, 0)); return ret; } static struct serdes_chip_bridge_ops max96789_bridge_ops = { .init = max96789_bridge_init, .detect = max96789_bridge_detect, .enable = max96789_bridge_enable, .disable = max96789_bridge_disable, }; struct serdes_chip_data serdes_max96789_data = { .name = "max96789", .serdes_type = TYPE_SER, .serdes_id = MAXIM_ID_MAX96789, .bridge_ops = &max96789_bridge_ops, }; EXPORT_SYMBOL_GPL(serdes_max96789_data);