Overview
Own USB enablement on Linux for a 64-bit RISC-V MPU SoC platform, covering driver bring-up, compliance, and automated validation (AVV) from FPGA through to first silicon.
What you'll do
- Enable and maintain USB host, device and dual-role functionality on a 64-bit RISC-V MPU Linux platform.
- Bring up USB controllers (e.g., xHCI/EHCI for host, UDC for device/gadget), including PHY integration, clocks/resets and interrupts.
- Drive kernel/BSP enablement: Device Tree bindings, power management (runtime/PM QoS), suspend/resume and performance tuning.
- Develop and debug USB drivers and related subsystems, including USB core interactions, hub behavior, gadget framework and class drivers as needed.
- Enable and validate user-space workflows: enumeration, throughput/latency, storage/networking classes, and reliability over hot-plug scenarios.
- Deliver USB-ready SDK releases with integration, regression validation, and developer-facing documentation/debug guides.
- Create test plans and automation to validate USB functionality, performance and compliance on FPGA/emulation and first silicon.
- Contribute to shift-left validation using virtual platforms, emulation or FPGA, and build reusable USB validation apps/tests exercising data paths and corner cases.
- Debug and root-cause USB issues across HW/FW/kernel using logs, traces and lab equipment (e.g., JTAG, logic/protocol analyzers), and drive fixes to closure.
- Partner with architects, RTL/PHY, board and platform teams to define requirements, de-risk schedules and land USB features.
- Own USB feature planning: role/port matrix, power and charging considerations, compliance goals and bring-up milestones.
- Provide bring-up and validation feedback that influences USB architecture decisions (controller/PHY selection, debug hooks, observability, testability).
- Align with internal and external stakeholders on deliverables, bug triage and release readiness for USB enablement.
- Support early adopters and upstream fixes when appropriate (kernel, Device Tree, test collateral), and work with OEMs/Tier-1s during bring-up and USB interoperability.
What you'll need
- B.E./B.Tech or M.E./M.Tech in Computer Engineering, Electrical Engineering, or a related field.
- Minimum 8-15 years of experience in Embedded Linux platform/BSP and device-driver development.
- Expert-level C programming; comfortable reading and modifying kernel, driver and low-level firmware code.
- Strong Linux internals knowledge: boot flow, memory/interrupt subsystems, concurrency and performance debugging.
- Hands-on SoC/platform bring-up experience, including high-speed I/O enablement and an ownership mindset for subsystem quality.
- Hands-on with U-Boot, Linux kernel, Device Tree and Yocto/OpenEmbedded; experience integrating and validating USB in BSP/SDK releases.
- Strong debugging skills with GDB and at least one OpenOCD/JTAG, Lauterbach or similar tool; able to debug complex HW/SW interactions.
- Experience working on FPGA, emulation or early-silicon platforms for bring-up/validation.
Nice to have
- Deep USB knowledge (USB2/USB3) and familiarity with Linux USB architecture (usbcore, HCD, gadget framework).
- Experience with USB compliance/interoperability testing and post-silicon triage (throughput, link stability, suspend/resume, hot-plug).
- Exposure to USB Type-C/PD, retimers, and/or Alt Modes (e.g., DisplayPort).
- Familiarity with platform security boundaries relevant to USB (secure boot, firmware/OS boundaries, attack surface considerations).
- Experience with QEMU, virtual platforms or emulation workflows used for early driver/test development.
- Exposure to CI/CD and automated validation (Python/shell test frameworks, dashboards, regressions) for continuous USB quality.
Details
- Location: Pune / Bangalore, India.
Read the full description and apply on the company’s own careers page.