All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Noralf Trønnes" <noralf@tronnes.org>
To: Eric Anholt <eric@anholt.net>,
	kernel@martin.sperl.org, Stephen Warren <swarren@wwwdotorg.org>,
	Lee Jones <lee@kernel.org>, Russell King <linux@arm.linux.org.uk>,
	Mark Brown <broonie@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Pawel Moll <pawel.moll@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ian Campbell <ijc+devicetree@hellion.org.uk>,
	Kumar Gala <galak@codeaurora.org>,
	devicetree@vger.kernel.org, linux-rpi-kernel@lists.infradead.org,
	linux-spi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, Phil <phil@raspberrypi.org>
Subject: Re: [PATCH v5 0/6] bcm2835: auxiliar device support for spi
Date: Thu, 10 Sep 2015 17:48:33 +0200	[thread overview]
Message-ID: <55F1A651.5090102@tronnes.org> (raw)
In-Reply-To: <87h9n4weg8.fsf@eliezer.anholt.net>


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.

WARNING: multiple messages have this Message-ID (diff)
From: noralf@tronnes.org (Noralf Trønnes)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 0/6] bcm2835: auxiliar device support for spi
Date: Thu, 10 Sep 2015 17:48:33 +0200	[thread overview]
Message-ID: <55F1A651.5090102@tronnes.org> (raw)
In-Reply-To: <87h9n4weg8.fsf@eliezer.anholt.net>


Den 09.09.2015 03:48, skrev Eric Anholt:
> kernel at 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.

  parent reply	other threads:[~2015-09-10 15:48 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-04  9:41 [PATCH v5 0/6] bcm2835: auxiliar device support for spi kernel-TqfNSX0MhmxHKSADF0wUEw
2015-09-04  9:41 ` kernel
2015-09-04  9:41 ` kernel at martin.sperl.org
2015-09-04  9:41 ` [PATCH 1/6] soc: bcm2835: auxiliar devices enable infrastructure kernel
2015-09-04  9:41   ` kernel at martin.sperl.org
2015-09-04  9:41 ` [PATCH v5 2/6] ARM: bcm2835: add DT for the bcm2835 auxiliar devices kernel
2015-09-04  9:41   ` kernel at martin.sperl.org
2015-09-04  9:41 ` [PATCH v5 3/6] dt/bindings: bcm2835: add binding documentation for bcm2835-aux kernel
2015-09-04  9:41   ` kernel at martin.sperl.org
2015-09-04  9:41 ` [PATCH v5 4/6] spi: bcm2835: new driver implementing auxiliar spi1/spi2 on the bcm2835 soc kernel
2015-09-04  9:41   ` kernel at martin.sperl.org
2015-09-09  2:20   ` Eric Anholt
2015-09-09  2:20     ` Eric Anholt
2015-09-09  2:20     ` Eric Anholt
2015-09-04  9:41 ` [PATCH v5 5/6] ARM: bcm2835: enable building of spi-bcm2835aux driver in default config kernel
2015-09-04  9:41   ` kernel at martin.sperl.org
     [not found] ` <1441359711-2800-1-git-send-email-kernel-TqfNSX0MhmxHKSADF0wUEw@public.gmane.org>
2015-09-04  9:41   ` [PATCH v5 6/6] dt/bindings: bcm2835: Add binding documentation for auxiliar spi devices kernel-TqfNSX0MhmxHKSADF0wUEw
2015-09-04  9:41     ` kernel
2015-09-04  9:41     ` kernel at martin.sperl.org
2015-09-09  1:48   ` [PATCH v5 0/6] bcm2835: auxiliar device support for spi Eric Anholt
2015-09-09  1:48     ` Eric Anholt
2015-09-09  1:48     ` Eric Anholt
2015-09-09  1:48     ` Eric Anholt
     [not found]     ` <87h9n4weg8.fsf-omZaPlIz5HhaEpDpdNBo/KxOck334EZe@public.gmane.org>
2015-09-09  9:00       ` Alexander Stein
2015-09-09  9:00         ` Alexander Stein
2015-09-09  9:00         ` Alexander Stein
2015-09-09 18:27         ` Eric Anholt
2015-09-09 18:27           ` Eric Anholt
2015-09-09 18:27           ` Eric Anholt
2015-09-10 15:48     ` Noralf Trønnes [this message]
2015-09-10 15:48       ` Noralf Trønnes
     [not found]       ` <55F1A651.5090102-L59+Z2yzLopAfugRpC6u6w@public.gmane.org>
2015-09-10 15:57         ` Martin Sperl
2015-09-10 15:57           ` Martin Sperl
2015-09-10 15:57           ` Martin Sperl
2015-09-10 16:58           ` Phil Elwell
2015-09-10 17:02           ` Phil Elwell
2015-09-10 17:02             ` Phil Elwell
2015-09-10 17:02             ` Phil Elwell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55F1A651.5090102@tronnes.org \
    --to=noralf@tronnes.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=eric@anholt.net \
    --cc=galak@codeaurora.org \
    --cc=ijc+devicetree@hellion.org.uk \
    --cc=kernel@martin.sperl.org \
    --cc=lee@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=mark.rutland@arm.com \
    --cc=pawel.moll@arm.com \
    --cc=phil@raspberrypi.org \
    --cc=robh+dt@kernel.org \
    --cc=swarren@wwwdotorg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.