using_dma(9)
π
using_dma(9) β the using_dma page, bestie edition β¨
okay so this is a page from the Kernel API Manual (the 9 section, kernel stuff, iykyk) and it's literally just one tiny function that tells you if the driver is doing DMA. short king energy, but let's get into it π«Ά
β¨ NAME β¨
using_dma β return the DMA status of the driver. that's it. that's the whole job π
π SYNOPSIS π
bool using_dma (struct dwc2_hsotg *hsotg );
it returns a bool and takes exactly one argument. clean. minimal. iconic. β¨
πΈ ARGUMENTS πΈ
hsotgβ The driver state. that's the whole description, no notes, she said what she said π
π¦ DESCRIPTION π¦
so the function returns true if we're using DMA. simple as that, no cap π
but here's the tea: currently the DMA support code is worked into everywhere that needs it, however the AMBA DMA implementation in the hardware can only DMA from 32bit aligned addresses. meaning gadgets like the CDC Ethernet cannot work, because they often pass packets that are not 32bit aligned. like, the hardware just won't take them π
unfortunately the choice to use DMA or not is global to the controller and seems to be only settable when the controller is being put through a core reset. so we got two options, bestie: either we fix the gadgets to take account of DMA alignment, or we add bounce buffers (yuerk) π
and last thing β g_using_dma is set depending on dts flag. that's the flag, that's the vibe check, periodt β
π SEE ALSO π
so this page hangs out with basically the entire ./drivers/usb/dwc2/gadget.c friend group (also in the Kernel file ./drivers/usb/dwc2/gadget.c). roll call, everyone say hi π:
dwc2_gadget_incr_frame_num(9)dwc2_gadget_dec_frame_num_by_one(9)dwc2_hsotg_en_gsint(9)dwc2_hsotg_disable_gsint(9)dwc2_hsotg_ctrl_epint(9)dwc2_hsotg_tx_fifo_count(9)dwc2_hsotg_tx_fifo_total_depth(9)dwc2_gadget_wkup_alert_handler(9)dwc2_hsotg_tx_fifo_average_depth(9)dwc2_hsotg_init_fifo(9)dwc2_hsotg_ep_alloc_request(9)is_ep_periodic(9)dwc2_hsotg_unmap_dma(9)dwc2_hsotg_write_fifo(9)get_ep_limit(9)dwc2_hsotg_read_frameno(9)dwc2_gadget_get_chain_limit(9)dwc2_hsotg_start_req(9)dwc2_hsotg_map_dma(9)dwc2_gadget_target_frame_elapsed(9)dwc2_hsotg_complete_oursetup(9)ep_from_windex(9)dwc2_hsotg_set_test_mode(9)dwc2_hsotg_send_reply(9)dwc2_hsotg_process_req_status(9)get_ep_head(9)dwc2_gadget_start_next_request(9)dwc2_hsotg_process_req_feature(9)dwc2_hsotg_stall_ep0(9)dwc2_hsotg_process_control(9)dwc2_hsotg_complete_setup(9)dwc2_hsotg_enqueue_setup(9)dwc2_hsotg_complete_request(9)dwc2_hsotg_rx_data(9)dwc2_hsotg_ep0_zlp(9)dwc2_hsotg_handle_outdone(9)dwc2_hsotg_handle_rx(9)dwc2_hsotg_ep0_mps(9)dwc2_hsotg_set_ep_maxpacket(9)dwc2_hsotg_txfifo_flush(9)dwc2_hsotg_trytx(9)dwc2_hsotg_complete_in(9)dwc2_gadget_read_ep_interrupts(9)dwc2_gadget_handle_ep_disabled(9)dwc2_gadget_handle_out_token_ep_disabled(9)dwc2_gadget_handle_nak(9)dwc2_hsotg_epint(9)dwc2_hsotg_irq_enumdone(9)kill_all_requests(9)dwc2_hsotg_disconnect(9)dwc2_hsotg_irq_fifoempty(9)dwc2_hsotg_core_init_disconnected(9)dwc2_gadget_handle_incomplete_isoc_in(9)dwc2_gadget_handle_incomplete_isoc_out(9)dwc2_hsotg_irq(9)dwc2_hsotg_ep_enable(9)dwc2_hsotg_ep_disable(9)on_list(9)dwc2_hsotg_ep_dequeue(9)dwc2_gadget_ep_set_wedge(9)dwc2_hsotg_ep_sethalt(9)dwc2_hsotg_ep_sethalt_lock(9)dwc2_hsotg_init(9)dwc2_hsotg_udc_start(9)dwc2_hsotg_udc_stop(9)dwc2_hsotg_gadget_getframe(9)dwc2_hsotg_set_selfpowered(9)dwc2_hsotg_pullup(9)dwc2_hsotg_vbus_draw(9)dwc2_hsotg_initep(9)dwc2_hsotg_hw_cfg(9)dwc2_hsotg_dump(9)dwc2_gadget_init(9)dwc2_hsotg_remove(9)dwc2_backup_device_registers(9)dwc2_restore_device_registers(9)dwc2_gadget_init_lpm(9)dwc2_gadget_program_ref_clk(9)dwc2_gadget_enter_hibernation(9)dwc2_gadget_exit_hibernation(9)dwc2_gadget_enter_partial_power_down(9)dwc2_gadget_enter_clock_gating(9)
like I said. the whole friend group. bring snacks π
and that's the page!! π little sign-off for the metadata girlies: this one lives under ./drivers/usb/dwc2, it's dated October 2026, and it's page using_dma(9) of the Kernel API Manual. mwah, go read the other eighty-whatever pages, ily ππβ¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms