2011-05-09 20:56:46 +04:00
# ifndef LINUX_BCMA_PRIVATE_H_
# define LINUX_BCMA_PRIVATE_H_
# ifndef pr_fmt
# define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
# endif
# include <linux/bcma/bcma.h>
# include <linux/delay.h>
# define BCMA_CORE_SIZE 0x1000
2012-07-06 00:07:32 +04:00
# define bcma_err(bus, fmt, ...) \
pr_err ( " bus%d: " fmt , ( bus ) - > num , # # __VA_ARGS__ )
# define bcma_warn(bus, fmt, ...) \
pr_warn ( " bus%d: " fmt , ( bus ) - > num , # # __VA_ARGS__ )
# define bcma_info(bus, fmt, ...) \
pr_info ( " bus%d: " fmt , ( bus ) - > num , # # __VA_ARGS__ )
# define bcma_debug(bus, fmt, ...) \
pr_debug ( " bus%d: " fmt , ( bus ) - > num , # # __VA_ARGS__ )
2011-05-09 20:56:46 +04:00
struct bcma_bus ;
/* main.c */
2013-06-26 12:02:11 +04:00
bool bcma_wait_value ( struct bcma_device * core , u16 reg , u32 mask , u32 value ,
int timeout ) ;
2014-10-03 19:00:24 +04:00
void bcma_prepare_core ( struct bcma_bus * bus , struct bcma_device * core ) ;
2015-01-16 22:59:39 +03:00
void bcma_init_bus ( struct bcma_bus * bus ) ;
2015-02-08 19:11:50 +03:00
void bcma_unregister_cores ( struct bcma_bus * bus ) ;
2012-12-22 03:12:59 +04:00
int bcma_bus_register ( struct bcma_bus * bus ) ;
2011-06-18 03:01:59 +04:00
void bcma_bus_unregister ( struct bcma_bus * bus ) ;
2015-01-19 10:30:30 +03:00
int __init bcma_bus_early_register ( struct bcma_bus * bus ) ;
2011-12-10 01:16:07 +04:00
# ifdef CONFIG_PM
2012-01-14 02:58:40 +04:00
int bcma_bus_suspend ( struct bcma_bus * bus ) ;
2011-12-10 01:16:07 +04:00
int bcma_bus_resume ( struct bcma_bus * bus ) ;
# endif
2011-05-09 20:56:46 +04:00
/* scan.c */
2015-01-16 22:59:39 +03:00
void bcma_detect_chip ( struct bcma_bus * bus ) ;
2011-05-09 20:56:46 +04:00
int bcma_bus_scan ( struct bcma_bus * bus ) ;
2011-06-02 04:08:51 +04:00
/* sprom.c */
int bcma_sprom_get ( struct bcma_bus * bus ) ;
2011-07-23 03:20:10 +04:00
/* driver_chipcommon.c */
2015-03-04 16:24:52 +03:00
void bcma_core_chipcommon_early_init ( struct bcma_drv_cc * cc ) ;
void bcma_core_chipcommon_init ( struct bcma_drv_cc * cc ) ;
void bcma_chipco_bcm4331_ext_pa_lines_ctl ( struct bcma_drv_cc * cc , bool enable ) ;
2011-07-23 03:20:10 +04:00
# ifdef CONFIG_BCMA_DRIVER_MIPS
void bcma_chipco_serial_init ( struct bcma_drv_cc * cc ) ;
2013-01-25 14:37:26 +04:00
extern struct platform_device bcma_pflash_dev ;
2011-07-23 03:20:10 +04:00
# endif /* CONFIG_BCMA_DRIVER_MIPS */
2014-09-09 00:53:36 +04:00
/* driver_chipcommon_b.c */
int bcma_core_chipcommon_b_init ( struct bcma_drv_cc_b * ccb ) ;
void bcma_core_chipcommon_b_free ( struct bcma_drv_cc_b * ccb ) ;
2011-07-23 03:20:10 +04:00
/* driver_chipcommon_pmu.c */
2015-03-04 16:24:52 +03:00
void bcma_pmu_early_init ( struct bcma_drv_cc * cc ) ;
void bcma_pmu_init ( struct bcma_drv_cc * cc ) ;
2012-12-07 15:56:56 +04:00
u32 bcma_pmu_get_alp_clock ( struct bcma_drv_cc * cc ) ;
u32 bcma_pmu_get_cpu_clock ( struct bcma_drv_cc * cc ) ;
2011-07-23 03:20:10 +04:00
2012-07-17 18:26:41 +04:00
# ifdef CONFIG_BCMA_SFLASH
/* driver_chipcommon_sflash.c */
int bcma_sflash_init ( struct bcma_drv_cc * cc ) ;
2012-08-10 23:23:53 +04:00
extern struct platform_device bcma_sflash_dev ;
2012-07-17 18:26:41 +04:00
# else
static inline int bcma_sflash_init ( struct bcma_drv_cc * cc )
{
bcma_err ( cc - > core - > bus , " Serial flash not supported \n " ) ;
return 0 ;
}
# endif /* CONFIG_BCMA_SFLASH */
# ifdef CONFIG_BCMA_NFLASH
/* driver_chipcommon_nflash.c */
int bcma_nflash_init ( struct bcma_drv_cc * cc ) ;
2012-08-12 15:08:05 +04:00
extern struct platform_device bcma_nflash_dev ;
2012-07-17 18:26:41 +04:00
# else
static inline int bcma_nflash_init ( struct bcma_drv_cc * cc )
{
bcma_err ( cc - > core - > bus , " NAND flash not supported \n " ) ;
return 0 ;
}
# endif /* CONFIG_BCMA_NFLASH */
2011-05-09 20:56:46 +04:00
# ifdef CONFIG_BCMA_HOST_PCI
/* host_pci.c */
extern int __init bcma_host_pci_init ( void ) ;
extern void __exit bcma_host_pci_exit ( void ) ;
# endif /* CONFIG_BCMA_HOST_PCI */
2014-09-26 02:09:19 +04:00
/* host_soc.c */
# if defined(CONFIG_BCMA_HOST_SOC) && defined(CONFIG_OF)
extern int __init bcma_host_soc_register_driver ( void ) ;
extern void __exit bcma_host_soc_unregister_driver ( void ) ;
# else
static inline int __init bcma_host_soc_register_driver ( void )
{
return 0 ;
}
static inline void __exit bcma_host_soc_unregister_driver ( void )
{
}
# endif /* CONFIG_BCMA_HOST_SOC && CONFIG_OF */
2012-01-31 03:03:33 +04:00
/* driver_pci.c */
2015-03-05 20:25:11 +03:00
# ifdef CONFIG_BCMA_DRIVER_PCI
2012-01-31 03:03:33 +04:00
u32 bcma_pcie_read ( struct bcma_drv_pci * pc , u32 address ) ;
2015-03-04 16:24:52 +03:00
void bcma_core_pci_early_init ( struct bcma_drv_pci * pc ) ;
void bcma_core_pci_init ( struct bcma_drv_pci * pc ) ;
2015-02-08 19:11:47 +03:00
void bcma_core_pci_up ( struct bcma_drv_pci * pc ) ;
void bcma_core_pci_down ( struct bcma_drv_pci * pc ) ;
2015-03-05 20:25:11 +03:00
# else
static inline void bcma_core_pci_early_init ( struct bcma_drv_pci * pc )
{
WARN_ON ( pc - > core - > bus - > hosttype = = BCMA_HOSTTYPE_PCI ) ;
}
static inline void bcma_core_pci_init ( struct bcma_drv_pci * pc )
{
/* Initialization is required for PCI hosted bus */
WARN_ON ( pc - > core - > bus - > hosttype = = BCMA_HOSTTYPE_PCI ) ;
}
# endif
2012-01-31 03:03:33 +04:00
2015-02-08 19:11:49 +03:00
/* driver_pcie2.c */
2015-03-05 20:25:11 +03:00
# ifdef CONFIG_BCMA_DRIVER_PCI
2015-03-04 16:24:52 +03:00
void bcma_core_pcie2_init ( struct bcma_drv_pcie2 * pcie2 ) ;
2015-02-08 19:11:49 +03:00
void bcma_core_pcie2_up ( struct bcma_drv_pcie2 * pcie2 ) ;
2015-03-05 20:25:11 +03:00
# else
static inline void bcma_core_pcie2_init ( struct bcma_drv_pcie2 * pcie2 )
{
/* Initialization is required for PCI hosted bus */
WARN_ON ( pcie2 - > core - > bus - > hosttype = = BCMA_HOSTTYPE_PCI ) ;
}
# endif
2015-02-08 19:11:49 +03:00
2012-12-05 21:46:02 +04:00
extern int bcma_chipco_watchdog_register ( struct bcma_drv_cc * cc ) ;
2011-07-05 21:48:26 +04:00
# ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE
2012-12-22 03:12:59 +04:00
bool bcma_core_pci_is_in_hostmode ( struct bcma_drv_pci * pc ) ;
void bcma_core_pci_hostmode_init ( struct bcma_drv_pci * pc ) ;
2015-01-25 16:02:48 +03:00
# else
static inline bool bcma_core_pci_is_in_hostmode ( struct bcma_drv_pci * pc )
{
return false ;
}
static inline void bcma_core_pci_hostmode_init ( struct bcma_drv_pci * pc )
{
}
2011-07-05 21:48:26 +04:00
# endif /* CONFIG_BCMA_DRIVER_PCI_HOSTMODE */
2015-03-04 16:24:52 +03:00
/**************************************************
* driver_mips . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifdef CONFIG_BCMA_DRIVER_MIPS
unsigned int bcma_core_mips_irq ( struct bcma_device * dev ) ;
void bcma_core_mips_early_init ( struct bcma_drv_mips * mcore ) ;
void bcma_core_mips_init ( struct bcma_drv_mips * mcore ) ;
# else
static inline unsigned int bcma_core_mips_irq ( struct bcma_device * dev )
{
return 0 ;
}
static inline void bcma_core_mips_early_init ( struct bcma_drv_mips * mcore )
{
}
static inline void bcma_core_mips_init ( struct bcma_drv_mips * mcore )
{
}
# endif
/**************************************************
* driver_gmac_cmn . c
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifdef CONFIG_BCMA_DRIVER_GMAC_CMN
void bcma_core_gmac_cmn_init ( struct bcma_drv_gmac_cmn * gc ) ;
# else
static inline void bcma_core_gmac_cmn_init ( struct bcma_drv_gmac_cmn * gc )
{
}
# endif
2012-11-21 02:24:30 +04:00
# ifdef CONFIG_BCMA_DRIVER_GPIO
/* driver_gpio.c */
int bcma_gpio_init ( struct bcma_drv_cc * cc ) ;
2013-02-04 02:25:33 +04:00
int bcma_gpio_unregister ( struct bcma_drv_cc * cc ) ;
2012-11-21 02:24:30 +04:00
# else
static inline int bcma_gpio_init ( struct bcma_drv_cc * cc )
{
return - ENOTSUPP ;
}
2013-02-04 02:25:33 +04:00
static inline int bcma_gpio_unregister ( struct bcma_drv_cc * cc )
{
return 0 ;
}
2012-11-21 02:24:30 +04:00
# endif /* CONFIG_BCMA_DRIVER_GPIO */
2011-05-09 20:56:46 +04:00
# endif