Messages in this thread | | | Subject | Re: [PATCH v5 0/6] bcm2835: auxiliar device support for spi | From | Noralf Trønnes <> | Date | Thu, 10 Sep 2015 17:48:33 +0200 |
| |
Den 09.09.2015 03:48, skrev Eric Anholt: > kernel@martin.sperl.org writes: > >> From: Martin Sperl <kernel@martin.sperl.org> >> >> The BCM2835 contains 3 auxiliar devices: >> * spi1 >> * spi2 >> * uart1 >> >> All of those 3 devices are enabled/disabled via a shared register, >> which is set by default to be disabled. >> >> Access to this register needs to get serialized. >> >> So after several iterations of discussions with the following ideas: >> * syscon - device tree should describe HW not drivers to use - >> 'compatiblity = "brcm,bcm2835-aux-enable", "syscon";' >> is not acceptable >> * regulator - it is not necessarily a regulator or a power gate >> that is implemented in HW, so it is not valid to use >> this framework >> >> The recommendation was made to create a new minimal API in soc >> just for access to this shared enable/disable register. >> >> This patch-series implements: >> * the bcm2835-auxiliar device enable/disable api in soc. >> * the bcm2835-auxiliar spi device driver >> >> The uart1 device driver (ns16550 based) is not implemented so far >> but would be using the same API. >> >> Both spi and uart drivers can run with shared interrupts, >> so there is no need for an interrupt-controller to get implemented. > I finally had a chance to sit down and look at what the hardware's doing > with the enable bit (also, I've read a whole lot more of the hardware > now, so I'm a lot faster at answering questions like this). The enable > bits are a clock gate off of the VPU clock. > > I knocked together the enable bits as a clock gate driver, since I'd > just written very similar code for the audio domain clock driver (and I > assume you are grumpy about how much time you've spent on this one > stupid register). It's up at > https://github.com/anholt/linux/tree/bcm2835-clock-aux and I can submit > it if you like the result. I've compile tested it only, but I'm hoping > you could just drop your aux SPI driver on top of it and have things > work. >
This looks interesting. But there's a challenge with the uart1 and the 8250 driver.
Phil Elwell has this to say: This means that that UART1 isn't an exact clone of a 8250 UART. In a particular, the clock divisor is calculated differently. A standard 8250 derives the baud rate as clock/(divisor16), whereas the BCM2835 mini UART uses clock/(divisor8). This means that if you want to use the standard driver then you need to lie about the clock frequency, providing a value is twice the real value, in order for a suitable divisor to be calculated.
Ref: https://github.com/raspberrypi/linux/pull/1008#issuecomment-139234607
So either we need a new uart1 driver or a doubled clock freq. somehow.
Noralf.
| |