Embedded Linux BSP Engineer · Yocto/U-Boot · Linux Kernel Driver Contributor · Zephyr Individual Contributor · IEC 62304 Medical
📍 Espoo, Finland · Open to embedded Linux / medical device roles in Europe and remote
| Area | Detail |
|---|---|
| Yocto BSP | Owner of ARM SoC BSP layer for production ARM SoC platform — machine config, BitBake recipes, kernel LTS upgrades, CI/CD pipeline |
| Linux kernel drivers | 17 upstream patches across 9 subsystems — IIO, DMA, DT bindings, networking, SCSI, DRM/Accel |
| U-Boot | NXP i.MX6Q patches — SPL SRAM overflow fix, LDB clock swap fix, VPD reader fix |
| Zephyr RTOS | Individual Contributor — MAX30102 SpO₂/HR sensor driver merged, Arm TSC reviewed |
| Medical device | IEC 62304 + ISO 14971 — Class IIb CE-marked device firmware, M.HSc. Biomedical Engineering |
I own the Yocto BSP layer for a production ARM SoC platform:
- Machine configuration, kernel recipes, BitBake layer hierarchy
- Cross-compilation toolchain and sysroot management
- Kernel LTS version upgrades — API migration, Device Tree updates, hardware regression validation
- CI/CD pipeline: automated build, boot, and regression testing across board variants
Patches for NXP i.MX6Q LDB display clock initialisation and common board code.
| Patch | Files | Status |
|---|---|---|
ge: common: vpd_reader: fix errloc array size in verify_bch() |
board/ge/common/vpd_reader.c |
🔄 Reviewed — Ian Ray |
clk: imx6q: guard LDB clock init with appropriate video config |
drivers/clk/imx/clk-imx6q.c, board/aristainetos/aristainetos.c |
🔄 Under review |
imx6: clock: fix clk0/clk1 swap in select_ldb_di_clock_source() |
arch/arm/mach-imx/mx6/clock.c |
🔄 Under review |
Root cause found during review: clk0/clk1 were written to LDB_DI1/LDB_DI0 respectively — reversed. Guard mismatch: function defined for CONFIG_SPL_VIDEO but called for !CONFIG_SPL_BUILD. SPL SRAM overflow of 112 bytes. Fixed with !CONFIG_SPL_BUILD || CONFIG_SPL_VIDEO — saved 688 bytes in SPL.
IEC 62304-aligned documentation based on real upstream drivers — real code, real documentation discipline.
MAX30102 (Zephyr RTOS, merged PR #108697):
| Document | Standard | Description |
|---|---|---|
| Software Requirements Specification | IEC 62304 §5.2 | 12 shall-statements: functional, performance, interface and safety requirements |
| Software Design Specification | IEC 62304 §5.4 | Architecture, component design, interfaces, timing, concurrency |
| SOUP Record | IEC 62304 §8 | SOUP management for Zephyr RTOS dependencies with risk classification |
| FMEA | ISO 14971:2019 | 8 failure modes — severity, probability, risk level, mitigations |
ADS1299 (Linux kernel IIO, patch submitted):
| Document | Standard | Description |
|---|---|---|
| SOUP Record | IEC 62304 §8 | SOUP identification, known anomalies, risk classification, verification |
| FMEA | ISO 14971:2019 | 10 failure modes for 24-bit EEG acquisition — signal integrity, lead-off, SPI errors |
Documents: iec62304-embedded-drivers · Tool: kernel-soup-gen — auto-generate SOUP records for any Linux kernel driver
| Contribution | Area | Status |
|---|---|---|
drivers: sensor: max3010x: MAX30102 SpO₂ and heart-rate driver |
I2C, interrupt-driven FIFO, Devicetree binding, Kconfig, build coverage | ✅ Merged — Arm TSC reviewed · PR #108697 |
maxim,max3010x-common shared DT binding |
Pulse oximeter / heart-rate sensor family | ✅ Merged |
tests/drivers/build_all/sensor/i2c.dtsi coverage |
Zephyr sensor build test matrix | ✅ Merged |
Recognised as Zephyr Individual Contributor.
17 patches across 9 subsystems. Full history: lore.kernel.org
| Patch | Component | Status |
|---|---|---|
bus/fslmc: fix ignored return value in fslmc_bus_unplug |
NXP DPAA2 bus driver | ✅ Merged — Hemant Agrawal (NXP), David Marchand (Red Hat) |
dma/dpaa2: fix dpaa2_qdma_remove always returning success |
NXP DPAA2 DMA driver | ✅ Merged |
| Patch | Component | Status |
|---|---|---|
pfcwd: fix TypeError crash in interval() on partial PFC_WD entries |
PFC Watchdog CLI | 🔄 Open — DCO ✅ · EasyCLA ✅ |
- M.HSc. Biomedical Engineering — University of Oulu, Finland (2016–2021)
- M.Sc. Computer Science & Engineering — Islamic University, Kushtia, Bangladesh (2014–2015)
- B.Sc. Electrical & Electronics Engineering — International Islamic University Chittagong, Bangladesh (2008–2013)
Linux for Engineers — The Linux Foundation · Introduction to RISC-V (LFD110) — The Linux Foundation · Generative AI and LLMs — Coursera


