Lines Matching +full:data +full:- +full:bits

4  * SPDX-License-Identifier: Apache-2.0
34 gpio_pin_set_dt(&dev_cfg->mdc_gpio, 1); in mdio_gpio_clock_the_bit()
36 gpio_pin_set_dt(&dev_cfg->mdc_gpio, 0); in mdio_gpio_clock_the_bit()
41 gpio_pin_configure_dt(&dev_cfg->mdio_gpio, dir ? GPIO_OUTPUT_ACTIVE : GPIO_INPUT); in mdio_gpio_dir()
49 uint16_t data = 0; in mdio_gpio_read() local
52 data <<= 1; in mdio_gpio_read()
54 if (gpio_pin_get_dt(&dev_cfg->mdio_gpio) == 1) { in mdio_gpio_read()
55 data |= 1; in mdio_gpio_read()
59 *pdata = data; in mdio_gpio_read()
63 uint32_t data, uint8_t len) in mdio_gpio_write() argument
65 uint32_t v_data = data; in mdio_gpio_write()
68 v_data <<= 32 - v_len; in mdio_gpio_write()
69 for (; v_len > 0; v_len--) { in mdio_gpio_write()
70 gpio_pin_set_dt(&dev_cfg->mdio_gpio, (v_data & MDIO_GPIO_MSB) ? 1 : 0); in mdio_gpio_write()
79 const struct mdio_gpio_config *const dev_cfg = dev->config; in mdio_gpio_transfer()
80 struct mdio_gpio_data *const dev_data = dev->data; in mdio_gpio_transfer()
82 k_sem_take(&dev_data->sem, K_FOREVER); in mdio_gpio_transfer()
86 /* PRE32: 32 bits '1' for sync*/ in mdio_gpio_transfer()
88 /* ST: 2 bits start of frame */ in mdio_gpio_transfer()
90 /* OP: 2 bits opcode, read '10' or write '01' */ in mdio_gpio_transfer()
92 /* PA5: 5 bits PHY address */ in mdio_gpio_transfer()
94 /* RA5: 5 bits register address */ in mdio_gpio_transfer()
97 if (rw) { /* Write data */ in mdio_gpio_transfer()
98 /* TA: 2 bits turn-around */ in mdio_gpio_transfer()
101 } else { /* Read data */ in mdio_gpio_transfer()
110 k_sem_give(&dev_data->sem); in mdio_gpio_transfer()
116 uint16_t *data) in mdio_gpio_read_mmi() argument
118 return mdio_gpio_transfer(dev, prtad, devad, MDIO_GPIO_READ_OP, 0, data); in mdio_gpio_read_mmi()
122 uint16_t data) in mdio_gpio_write_mmi() argument
124 return mdio_gpio_transfer(dev, prtad, devad, MDIO_GPIO_WRITE_OP, data, NULL); in mdio_gpio_write_mmi()
129 const struct mdio_gpio_config *const dev_cfg = dev->config; in mdio_gpio_initialize()
130 struct mdio_gpio_data *const dev_data = dev->data; in mdio_gpio_initialize()
133 k_sem_init(&dev_data->sem, 1, 1); in mdio_gpio_initialize()
135 if (!device_is_ready(dev_cfg->mdc_gpio.port)) { in mdio_gpio_initialize()
137 return -ENODEV; in mdio_gpio_initialize()
140 if (!device_is_ready(dev_cfg->mdio_gpio.port)) { in mdio_gpio_initialize()
142 return -ENODEV; in mdio_gpio_initialize()
145 rc = gpio_pin_configure_dt(&dev_cfg->mdc_gpio, GPIO_OUTPUT_INACTIVE); in mdio_gpio_initialize()
151 rc = gpio_pin_configure_dt(&dev_cfg->mdio_gpio, GPIO_INPUT); in mdio_gpio_initialize()