/* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-11-21 SummerGift add port file */ #include #include "pcf8574.h" //#define DRV_DEBUG #define LOG_TAG "drv.pcf8574_port" #include #define ETH_RESET_IO 7 //PHY RESET PIN #define I2C_BUS_NAME "i2c1" #define PCF8574_ADDR 0x20 /* pcf8574 hardware init */ pcf8574_device_t pcf8574_hw_init(char * dev_name, int addr) { static pcf8574_device_t dev; if (dev == RT_NULL) { dev = pcf8574_init(dev_name, addr); if (dev == RT_NULL) { LOG_E("i2c_bus %s for PCF8574 not found!", dev_name); return RT_NULL; } else { return dev; } } else { return dev; } } /* phy reset */ void phy_reset(void) { pcf8574_device_t dev = pcf8574_hw_init(I2C_BUS_NAME, PCF8574_ADDR); if (dev == RT_NULL) { LOG_E("can't get pcf8574 device"); return; } pcf8574_pin_write(dev, ETH_RESET_IO, 1); rt_thread_mdelay(100); pcf8574_pin_write(dev, ETH_RESET_IO, 0); rt_thread_mdelay(100); }