mbox

[GIT,PULL] at91: drivers for 3.18 #2

Message ID 1409934969-11584-1-git-send-email-nicolas.ferre@atmel.com
State New
Headers show

Pull-request

git://github.com/at91linux/linux-at91.git tags/at91-drivers2

Message

Nicolas Ferre Sept. 5, 2014, 4:36 p.m. UTC
Arnd, Olof, Kevin,

This pull-request is focused on the work that Maxime did for migrating our timer
(PIT) to the clocksource sub-system. A big cleanup happened which allows us to
be even closer to the point when we have only the bare minimum in our formerly
crowded mach-at91 directory.

This pull-request goes on top of the "drivers" one already sent to you on Sept.
01st.

Thanks, best regards,

The following changes since commit 405a72c5e78b5c560c8b2711d4000fa5eb063e1b:

  power: reset: at91-poweroff: fix wakeup status register index (2014-09-01 18:40:44 +0200)

are available in the git repository at:

  git://github.com/at91linux/linux-at91.git tags/at91-drivers2

for you to fetch changes up to 5c1406f573f0f13b85c738a21030aadc9bb36bdd:

  ARM: at91: PIT: Move the driver to drivers/clocksource (2014-09-03 10:55:46 +0200)

----------------------------------------------------------------
Second drivers series for AT91/3.18:
- move of the PIT (basic timer) from mach-at91 to its
  proper location: drivers/clocksource
- big cleanup of this driver along the way

----------------------------------------------------------------
Maxime Ripard (14):
      ARM: at91: PIT: Follow the general coding rules
      ARM: at91: generic.h: Add include safe guards
      ARM: at91: PIT: Use DIV_ROUND_CLOSEST to compute the cycles
      ARM: at91: PIT: Use of_have_populated_dt instead of CONFIG_OF
      ARM: at91: PIT: Rework probe functions
      ARM: at91: dt: Remove init_time definitions
      ARM: at91: PIT: Use consistent exit path in probe
      ARM: at91: PIT: Use pr_fmt
      ARM: at91: PIT: use request_irq instead of setup_irq
      ARM: at91: PIT: (Almost) remove the global variables
      ARM: at91: soc: Add init_time callback
      ARM: at91: Convert the boards to the init_time callback
      ARM: at91: PIT: Convert to an early_platform_device
      ARM: at91: PIT: Move the driver to drivers/clocksource

 arch/arm/mach-at91/Kconfig              |   5 -
 arch/arm/mach-at91/Makefile             |   1 -
 arch/arm/mach-at91/at91sam9260.c        |  34 +++-
 arch/arm/mach-at91/at91sam9261.c        |  34 +++-
 arch/arm/mach-at91/at91sam9263.c        |  34 +++-
 arch/arm/mach-at91/at91sam926x_time.c   | 294 ------------------------------
 arch/arm/mach-at91/at91sam9g45.c        |  34 +++-
 arch/arm/mach-at91/at91sam9rl.c         |  34 +++-
 arch/arm/mach-at91/board-afeb-9260v1.c  |   2 +-
 arch/arm/mach-at91/board-cam60.c        |   2 +-
 arch/arm/mach-at91/board-cpu9krea.c     |   2 +-
 arch/arm/mach-at91/board-dt-sam9.c      |  10 --
 arch/arm/mach-at91/board-dt-sama5.c     |   9 -
 arch/arm/mach-at91/board-flexibity.c    |   2 +-
 arch/arm/mach-at91/board-foxg20.c       |   2 +-
 arch/arm/mach-at91/board-gsia18s.c      |   2 +-
 arch/arm/mach-at91/board-pcontrol-g20.c |   2 +-
 arch/arm/mach-at91/board-sam9-l9260.c   |   2 +-
 arch/arm/mach-at91/board-sam9260ek.c    |   2 +-
 arch/arm/mach-at91/board-sam9261ek.c    |   4 +-
 arch/arm/mach-at91/board-sam9263ek.c    |   2 +-
 arch/arm/mach-at91/board-sam9g20ek.c    |   4 +-
 arch/arm/mach-at91/board-sam9m10g45ek.c |   2 +-
 arch/arm/mach-at91/board-sam9rlek.c     |   2 +-
 arch/arm/mach-at91/board-snapper9260.c  |   2 +-
 arch/arm/mach-at91/board-stamp9g20.c    |   4 +-
 arch/arm/mach-at91/generic.h            |   8 +-
 arch/arm/mach-at91/setup.c              |   5 +
 arch/arm/mach-at91/soc.h                |   1 +
 drivers/clocksource/Kconfig             |   4 +
 drivers/clocksource/Makefile            |   1 +
 drivers/clocksource/timer-atmel-pit.c   | 304 ++++++++++++++++++++++++++++++++
 32 files changed, 505 insertions(+), 345 deletions(-)
 delete mode 100644 arch/arm/mach-at91/at91sam926x_time.c
 create mode 100644 drivers/clocksource/timer-atmel-pit.c

Comments

Arnd Bergmann Sept. 5, 2014, 9:25 p.m. UTC | #1
On Friday 05 September 2014, Nicolas Ferre wrote:
> Arnd, Olof, Kevin,
> 
> This pull-request is focused on the work that Maxime did for migrating our timer
> (PIT) to the clocksource sub-system. A big cleanup happened which allows us to
> be even closer to the point when we have only the bare minimum in our formerly
> crowded mach-at91 directory.
> 
> This pull-request goes on top of the "drivers" one already sent to you on Sept.
> 01st.

Hmm, I'm not too happy to see more uses of early_platform_*, I was hoping
we could kill that off in the long run. This is only used for the legacy
board files, not for DT, right?

Do you have a timeline for getting rid of the board files completely?

	Arnd
Arnd Bergmann Sept. 5, 2014, 9:39 p.m. UTC | #2
On Friday 05 September 2014 23:25:11 Arnd Bergmann wrote:
> On Friday 05 September 2014, Nicolas Ferre wrote:
> > Arnd, Olof, Kevin,
> > 
> > This pull-request is focused on the work that Maxime did for migrating our timer
> > (PIT) to the clocksource sub-system. A big cleanup happened which allows us to
> > be even closer to the point when we have only the bare minimum in our formerly
> > crowded mach-at91 directory.
> > 
> > This pull-request goes on top of the "drivers" one already sent to you on Sept.
> > 01st.
> 
> Hmm, I'm not too happy to see more uses of early_platform_*, I was hoping
> we could kill that off in the long run. This is only used for the legacy
> board files, not for DT, right?
> 
> Do you have a timeline for getting rid of the board files completely?
> 

I've looked more closely, and I think a good way to solve this would be
to revert or remove "ARM: at91: PIT: Convert to an early_platform_device",
and add declarations for the two global functions to
include/clocksource/at91.h and passing the interrupt number as an argument
to at91sam926x_pit_init.

I understand it's not the goal you had in mind here, but it's far simpler
and it gives me hope that we can eventually kill that early platform
code.

	Arnd
Maxime Ripard Sept. 8, 2014, 9:26 a.m. UTC | #3
Hi Arnd,

On Fri, Sep 05, 2014 at 11:25:11PM +0200, Arnd Bergmann wrote:
> On Friday 05 September 2014, Nicolas Ferre wrote:
> > Arnd, Olof, Kevin,
> > 
> > This pull-request is focused on the work that Maxime did for migrating our timer
> > (PIT) to the clocksource sub-system. A big cleanup happened which allows us to
> > be even closer to the point when we have only the bare minimum in our formerly
> > crowded mach-at91 directory.
> > 
> > This pull-request goes on top of the "drivers" one already sent to you on Sept.
> > 01st.
> 
> Hmm, I'm not too happy to see more uses of early_platform_*, I was hoping
> we could kill that off in the long run. This is only used for the legacy
> board files, not for DT, right?

Yes, the DT uses the usual CLOCKSOURCE_OF_DECLARE mechanism.

I wasn't aware that early_platform drivers were in the killzone, but
I'm definitely aware that global custom exported functions are, hence
why I went this way.

> Do you have a timeline for getting rid of the board files completely?

I don't, but it would be great if we could kill these in the next
couple releases.

Maxime
Arnd Bergmann Sept. 8, 2014, 9:52 a.m. UTC | #4
On Monday 08 September 2014 11:26:42 Maxime Ripard wrote:
> On Fri, Sep 05, 2014 at 11:25:11PM +0200, Arnd Bergmann wrote:
> > On Friday 05 September 2014, Nicolas Ferre wrote:
> > > Arnd, Olof, Kevin,
> > > 
> > > This pull-request is focused on the work that Maxime did for migrating our timer
> > > (PIT) to the clocksource sub-system. A big cleanup happened which allows us to
> > > be even closer to the point when we have only the bare minimum in our formerly
> > > crowded mach-at91 directory.
> > > 
> > > This pull-request goes on top of the "drivers" one already sent to you on Sept.
> > > 01st.
> > 
> > Hmm, I'm not too happy to see more uses of early_platform_*, I was hoping
> > we could kill that off in the long run. This is only used for the legacy
> > board files, not for DT, right?
> 
> Yes, the DT uses the usual CLOCKSOURCE_OF_DECLARE mechanism.
> 
> I wasn't aware that early_platform drivers were in the killzone, but
> I'm definitely aware that global custom exported functions are, hence
> why I went this way.

I don't think it has been discussed much on the mailing list or IRC.
The early platform devices have not been used much outside of arch/sh
and arch/arm/mach-shmobile, and those only use it for clocksource and
serial.

Now we have a new method for both of these, at least with DT, so
my impression is that we won't need the early_platform support in
the future. One of the problems with the current interface is that
it requires statically declaring platform_device structures, which is
something that has been on Greg's list of device model antipatterns
for a long time.

> > Do you have a timeline for getting rid of the board files completely?
> 
> I don't, but it would be great if we could kill these in the next
> couple releases.

Ok, good.

	Arnd
Maxime Ripard Sept. 9, 2014, 9:15 a.m. UTC | #5
On Mon, Sep 08, 2014 at 11:52:35AM +0200, Arnd Bergmann wrote:
> On Monday 08 September 2014 11:26:42 Maxime Ripard wrote:
> > On Fri, Sep 05, 2014 at 11:25:11PM +0200, Arnd Bergmann wrote:
> > > On Friday 05 September 2014, Nicolas Ferre wrote:
> > > > Arnd, Olof, Kevin,
> > > > 
> > > > This pull-request is focused on the work that Maxime did for migrating our timer
> > > > (PIT) to the clocksource sub-system. A big cleanup happened which allows us to
> > > > be even closer to the point when we have only the bare minimum in our formerly
> > > > crowded mach-at91 directory.
> > > > 
> > > > This pull-request goes on top of the "drivers" one already sent to you on Sept.
> > > > 01st.
> > > 
> > > Hmm, I'm not too happy to see more uses of early_platform_*, I was hoping
> > > we could kill that off in the long run. This is only used for the legacy
> > > board files, not for DT, right?
> > 
> > Yes, the DT uses the usual CLOCKSOURCE_OF_DECLARE mechanism.
> > 
> > I wasn't aware that early_platform drivers were in the killzone, but
> > I'm definitely aware that global custom exported functions are, hence
> > why I went this way.
> 
> I don't think it has been discussed much on the mailing list or IRC.
> The early platform devices have not been used much outside of arch/sh
> and arch/arm/mach-shmobile, and those only use it for clocksource and
> serial.

That's what I found, yes.

> Now we have a new method for both of these, at least with DT, so
> my impression is that we won't need the early_platform support in
> the future.

I agree with that. I only see the early platform stuff as a temporary
measure for board files, before they're removed.

> One of the problems with the current interface is that it requires
> statically declaring platform_device structures, which is something
> that has been on Greg's list of device model antipatterns for a long
> time.

I didn't find any difference with how you declare platform_devices
compared to the old-usual way in board files, or was it something on
the list too ? :)

Maxime
Arnd Bergmann Sept. 9, 2014, 9:27 a.m. UTC | #6
On Tuesday 09 September 2014 11:15:20 Maxime Ripard wrote:
> 
> > One of the problems with the current interface is that it requires
> > statically declaring platform_device structures, which is something
> > that has been on Greg's list of device model antipatterns for a long
> > time.
> 
> I didn't find any difference with how you declare platform_devices
> compared to the old-usual way in board files, or was it something on
> the list too ? 

Yes. We never really bothered with cleaning up the existing static
platform_device instances, because the plan is to move away from
board files to DT anyway, but in short, if you ever need to add
a platform device to a legacy board file, do it like

	pdev = platform_device_alloc(...);
	platform_device_register(dev);

or

	platform_device_register_simple(...);

or

	static const struct platform_device_info info __initconst = { ... };
	platform_device_register_full(&info);

but not

	static struct platform_device pdev = { ... };
	platform_device_register(&pdev);

Unfortunately, the early platform_device only allows the last type.

	Arnd