Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/rtl8139/driver.c

    rfafb8e5 r870841cf  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2011 Jiri Michalec
    34 * All rights reserved.
     
    7475 *
    7576 */
    76 inline static void rtl8139_lock_all(rtl8139_t *rtl8139)
     77static void rtl8139_lock_all(rtl8139_t *rtl8139)
    7778{
    7879        assert(rtl8139);
     
    8687 *
    8788 */
    88 inline static void rtl8139_unlock_all(rtl8139_t *rtl8139)
     89static void rtl8139_unlock_all(rtl8139_t *rtl8139)
    8990{
    9091        assert(rtl8139);
     
    127128 *  @param rtl8139  The card private structure
    128129 */
    129 inline static void rtl8139_hw_int_set(rtl8139_t *rtl8139)
     130static void rtl8139_hw_int_set(rtl8139_t *rtl8139)
    130131{
    131132        pio_write_16(rtl8139->io_port + IMR, rtl8139->int_mask);
     
    138139 *  @return Nonzero if empty, zero otherwise
    139140 */
    140 inline static int rtl8139_hw_buffer_empty(rtl8139_t *rtl8139)
     141static int rtl8139_hw_buffer_empty(rtl8139_t *rtl8139)
    141142{
    142143        return pio_read_16(rtl8139->io_port + CR) & CR_BUFE;
     
    166167 *  @param mask     The mask to set
    167168 */
    168 inline static void rtl8139_hw_set_mcast_mask(rtl8139_t *rtl8139,
     169static void rtl8139_hw_set_mcast_mask(rtl8139_t *rtl8139,
    169170    uint64_t mask)
    170171{
     
    180181 *  @param bit_val  If bit_val is zero pmen is set to 0, otherwise pmen is set to 1
    181182 */
    182 inline static void rtl8139_hw_pmen_set(rtl8139_t *rtl8139, uint8_t bit_val)
     183static void rtl8139_hw_pmen_set(rtl8139_t *rtl8139, uint8_t bit_val)
    183184{
    184185        uint8_t config1 = pio_read_8(rtl8139->io_port + CONFIG1);
     
    222223 *  @return EOK if succeed, error code otherwise
    223224 */
    224 inline static void rtl8139_hw_get_addr(rtl8139_t *rtl8139,
     225static void rtl8139_hw_get_addr(rtl8139_t *rtl8139,
    225226    nic_address_t *addr)
    226227{
     
    261262 *   @param bits_add    The value to or
    262263 */
    263 inline static void rtl8139_hw_reg_add_8(rtl8139_t *rtl8139, size_t reg_offset,
     264static void rtl8139_hw_reg_add_8(rtl8139_t *rtl8139, size_t reg_offset,
    264265    uint8_t bits_add)
    265266{
     
    275276 *   @param bits_add    The mask of bits to remove
    276277 */
    277 inline static void rtl8139_hw_reg_rem_8(rtl8139_t *rtl8139, size_t reg_offset,
     278static void rtl8139_hw_reg_rem_8(rtl8139_t *rtl8139, size_t reg_offset,
    278279    uint8_t bits_add)
    279280{
     
    338339
    339340static errno_t rtl8139_dev_add(ddf_dev_t *dev);
     341static errno_t rtl8139_dev_quiesce(ddf_dev_t *dev);
    340342
    341343/** Basic driver operations for RTL8139 driver */
    342344static driver_ops_t rtl8139_driver_ops = {
    343345        .dev_add = &rtl8139_dev_add,
     346        .dev_quiesce = &rtl8139_dev_quiesce
    344347};
    345348
     
    432435 *  @param io_base  The address of the i/o port mapping start
    433436 */
    434 inline static void rtl8139_hw_soft_reset(void *io_base)
     437static void rtl8139_hw_soft_reset(void *io_base)
    435438{
    436439        pio_write_8(io_base + CR, CR_RST);
     
    819822 *
    820823 * @param icall  The IPC call structure
    821  * @param dev    The rtl8139 device
    822  *
    823  */
    824 static void rtl8139_interrupt_handler(ipc_call_t *icall, ddf_dev_t *dev)
    825 {
    826         assert(dev);
    827         assert(icall);
    828 
     824 * @param arg    Argument (nic_t *)
     825 *
     826 */
     827static void rtl8139_interrupt_handler(ipc_call_t *icall, void *arg)
     828{
    829829        uint16_t isr = (uint16_t) ipc_get_arg2(icall);
    830         nic_t *nic_data = nic_get_from_ddf_dev(dev);
     830        nic_t *nic_data = (nic_t *)arg;
    831831        rtl8139_t *rtl8139 = nic_get_specific(nic_data);
    832832
     
    848848 *  @return An error code otherwise.
    849849 */
    850 inline static errno_t rtl8139_register_int_handler(nic_t *nic_data,
     850static errno_t rtl8139_register_int_handler(nic_t *nic_data,
    851851    cap_irq_handle_t *handle)
    852852{
     
    861861        rtl8139_irq_code.cmds[3].addr = rtl8139->io_addr + IMR;
    862862        errno_t rc = register_interrupt_handler(nic_get_ddf_dev(nic_data),
    863             rtl8139->irq, rtl8139_interrupt_handler, &rtl8139_irq_code, handle);
     863            rtl8139->irq, rtl8139_interrupt_handler, (void *)nic_data,
     864            &rtl8139_irq_code, handle);
    864865
    865866        RTL8139_IRQ_STRUCT_UNLOCK();
     
    874875 * @param rtl8139  The card private data
    875876 */
    876 inline static void rtl8139_card_up(rtl8139_t *rtl8139)
     877static void rtl8139_card_up(rtl8139_t *rtl8139)
    877878{
    878879        void *io_base = rtl8139->io_port;
     
    12471248                }
    12481249        }
     1250}
     1251
     1252static void rtl8139_quiesce(rtl8139_t *rtl8139)
     1253{
     1254        rtl8139_hw_soft_reset(rtl8139->io_port);
    12491255}
    12501256
     
    13301336        rtl8139_dev_cleanup(dev);
    13311337        return rc;
     1338}
     1339
     1340/** Quiesce RTL8139.
     1341 *
     1342 * @param dev RTL8139 device.
     1343 * @return EOK on sucess, or an error code.
     1344 */
     1345errno_t rtl8139_dev_quiesce(ddf_dev_t *dev)
     1346{
     1347        nic_t *nic;
     1348        rtl8139_t *rtl8139;
     1349
     1350        ddf_msg(LVL_NOTE, "RTL8139_dev_quiesce %s (handle = %zu)",
     1351            ddf_dev_get_name(dev), ddf_dev_get_handle(dev));
     1352
     1353        nic = nic_get_from_ddf_dev(dev);
     1354        rtl8139 = nic_get_specific(nic);
     1355
     1356        rtl8139_quiesce(rtl8139);
     1357        return EOK;
    13321358}
    13331359
     
    17681794 *  @param was_promisc  Sign if the promiscuous mode was active before disabling
    17691795 */
    1770 inline static void rtl8139_rcx_promics_rem(nic_t *nic_data,
     1796static void rtl8139_rcx_promics_rem(nic_t *nic_data,
    17711797    nic_multicast_mode_t mcast_mode, uint8_t was_promisc)
    17721798{
Note: See TracChangeset for help on using the changeset viewer.