forked from Minki/linux
379aae5d6c
This fixes a regression due to the new apb_pclk stuff in the U300 platform, makes it run by splitting the apb clock off the single UART clocks. For the MMCI and PL022 clocks we don't split them: these are actually hardwired to the same clock terminal and will thus simply have a double reference count and will be referenced twice. We also move clock registration to .init_irq() so they are available early enough for probing to be successful and remove the earlier quirk to clock primecells during PrimeCell registration. Signed-off-by: Linus Walleij <linus.walleij@stericsson.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
53 lines
1.2 KiB
C
53 lines
1.2 KiB
C
/*
|
|
* arch/arm/mach-u300/include/mach/clock.h
|
|
*
|
|
* Copyright (C) 2004 - 2005 Nokia corporation
|
|
* Written by Tuukka Tikkanen <tuukka.tikkanen@elektrobit.com>
|
|
* Based on clocks.h by Tony Lindgren, Gordon McNutt and RidgeRun, Inc
|
|
* Copyright (C) 2007-2009 ST-Ericsson AB
|
|
* Adopted to ST-Ericsson U300 platforms by
|
|
* Jonas Aaberg <jonas.aberg@stericsson.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*
|
|
*/
|
|
|
|
#ifndef __MACH_CLOCK_H
|
|
#define __MACH_CLOCK_H
|
|
|
|
#include <linux/clk.h>
|
|
|
|
struct clk {
|
|
struct list_head node;
|
|
struct module *owner;
|
|
struct device *dev;
|
|
const char *name;
|
|
struct clk *parent;
|
|
|
|
spinlock_t lock;
|
|
unsigned long rate;
|
|
bool reset;
|
|
__u16 clk_val;
|
|
__s8 usecount;
|
|
__u32 res_reg;
|
|
__u16 res_mask;
|
|
|
|
bool hw_ctrld;
|
|
|
|
void (*recalc) (struct clk *);
|
|
int (*set_rate) (struct clk *, unsigned long);
|
|
unsigned long (*get_rate) (struct clk *);
|
|
unsigned long (*round_rate) (struct clk *, unsigned long);
|
|
void (*init) (struct clk *);
|
|
void (*enable) (struct clk *);
|
|
void (*disable) (struct clk *);
|
|
};
|
|
|
|
void u300_enable_intcon_clock(void);
|
|
void u300_enable_timer_clock(void);
|
|
int u300_clock_init(void);
|
|
|
|
#endif
|