Incorrect dependency between CONFIG_DMA_BCM2708 and CONFIG_DMA_BCM2835

Open
#3,382 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
c

Research direction

Start in drivers/dma/Kconfig and drivers/dma/bcm2835-dma.c, then reproduce the reported configuration with CONFIG_DMADEVICES enabled, CONFIG_DMA_BCM2708=m, and CONFIG_DMA_BCM2835=y. Done means the kernel builds successfully for that configuration and the resulting bcm2708-dmaengine.ko and bcm2835-dma.ko modules can be loaded without the reported failure or kernel oops.

Written by the indexing model from the issue text.

Description

Describe the bug
The relationship expressed in drivers/dma/Kconfig where DMA_BCM2708 is marked as "depends on DMA_BCM2835" is incorrect. Notably if the BCM2835 support is built into the kernel, then the BCM2708 support cannot be a module.

To reproduce
Configure a kernel, with DMA Engine support (CONFIG_DMADEVICES) enabled. Set CONFIG_DMA_BCM2708=m and CONFIG_DMA_BCM2835=y.

Expected behaviour
The kernel build should succeed. Further ideally the resultant bcm2708-dmaengine.ko and bcm2835-dma.ko modules should be loadable without kernel oops and provide useful functionality.

Actual behaviour
Kernel build fails on drivers/dma/bcm2835-dma.c due to bcm_dmaman_remove() and bcm_dmaman_probe() being absent.

System
Irrelevant. Any system which can successfully build one or more of armel, armhf or aarch64 kernels should be acceptable.

Additional context
I'm building a kernel somewhat closer to how most Linux distributions tend to build them. Many things as modules instead of built-in. I'm targeting one particular PI, but I'm trying to figure out exactly which kernel options are required.

Dominant language
C
Stars
13.2k
Forks
5.5k
Avg merge
2d 21h
Merged PRs (30d)
21

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raspberrypi/linux

All issues in raspberrypi/linux

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.