satip-axe/kernel/include/linux/stm/stx5197.h

142 lines
3.3 KiB
C

/*
* (c) 2010 STMicroelectronics Limited
*
* Author: Pawel Moll <pawel.moll@st.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 __LINUX_STM_STX5197_H
#define __LINUX_STM_STX5197_H
#include <linux/device.h>
#include <linux/spi/spi.h>
#include <linux/stm/platform.h>
/* Sysconfig groups & registers */
#define HS_CFG 0
#define HD_CFG 1
#define CFG_CTRL_A HS_CFG, (0x00 / 4)
#define CFG_CTRL_B HS_CFG, (0x04 / 4)
#define CFG_CTRL_C HD_CFG, (0x00 / 4)
#define CFG_CTRL_D HD_CFG, (0x04 / 4)
#define CFG_CTRL_E HD_CFG, (0x08 / 4)
#define CFG_CTRL_F HD_CFG, (0x0c / 4)
#define CFG_CTRL_G HD_CFG, (0x10 / 4)
#define CFG_CTRL_H HD_CFG, (0x14 / 4)
#define CFG_CTRL_I HD_CFG, (0x18 / 4)
#define CFG_CTRL_J HD_CFG, (0x1c / 4)
#define CFG_CTRL_K HD_CFG, (0x40 / 4)
#define CFG_CTRL_L HD_CFG, (0x44 / 4)
#define CFG_CTRL_M HD_CFG, (0x48 / 4)
#define CFG_CTRL_N HD_CFG, (0x4c / 4)
#define CFG_CTRL_O HD_CFG, (0x50 / 4)
#define CFG_CTRL_P HD_CFG, (0x54 / 4)
#define CFG_CTRL_Q HD_CFG, (0x58 / 4)
#define CFG_CTRL_R HD_CFG, (0x5c / 4)
#define CFG_MONITOR_A HS_CFG, (0x08 / 4)
#define CFG_MONITOR_B HS_CFG, (0x0c / 4)
#define CFG_MONITOR_C HD_CFG, (0x20 / 4)
#define CFG_MONITOR_D HD_CFG, (0x24 / 4)
#define CFG_MONITOR_E HD_CFG, (0x28 / 4)
#define CFG_MONITOR_F HD_CFG, (0x2c / 4)
#define CFG_MONITOR_G HD_CFG, (0x30 / 4)
#define CFG_MONITOR_H HD_CFG, (0x34 / 4)
#define CFG_MONITOR_I HD_CFG, (0x38 / 4)
#define CFG_MONITOR_J HD_CFG, (0x3c / 4)
#define CFG_MONITOR_K HD_CFG, (0x60 / 4)
#define CFG_MONITOR_L HD_CFG, (0x64 / 4)
#define CFG_MONITOR_M HD_CFG, (0x68 / 4)
#define CFG_MONITOR_N HD_CFG, (0x6c / 4)
#define CFG_MONITOR_O HD_CFG, (0x70 / 4)
#define CFG_MONITOR_P HD_CFG, (0x74 / 4)
#define CFG_MONITOR_Q HD_CFG, (0x78 / 4)
#define CFG_MONITOR_R HD_CFG, (0x7c / 4)
void stx5197_early_device_init(void);
struct stx5197_asc_config {
int hw_flow_control;
int is_console;
};
void stx5197_configure_asc(int asc, struct stx5197_asc_config *config);
struct stx5197_ssc_i2c_config {
union {
enum {
/* SCL = PIO1.6, SDA = PIO1.7 */
stx5197_ssc0_i2c_pio1,
/* SCL = SPI_CLK, SDA = SPI_DATAIN */
stx5197_ssc0_i2c_spi,
} ssc0;
enum {
/* internal bus */
stx5197_ssc1_i2c_qpsk,
/* SCL = QAM_SCLT, SDA = QAM_SDAT */
stx5197_ssc1_i2c_qam,
} ssc1;
enum {
/* SCL = PIO3.3, SDA = PIO3.2 */
stx5197_ssc2_i2c_pio3,
} ssc2;
} routing;
};
/* SSC configure functions return I2C/SPI bus number */
int stx5197_configure_ssc_i2c(int ssc, struct stx5197_ssc_i2c_config *config);
int stx5197_configure_ssc_spi(int ssc);
struct stx5197_lirc_config {
enum {
stx5197_lirc_rx_disabled,
stx5197_lirc_rx_mode_ir,
stx5197_lirc_rx_mode_uhf
} rx_mode;
int tx_enabled;
};
void stx5197_configure_lirc(struct stx5197_lirc_config *config);
struct stx5197_pwm_config {
int out0_enabled;
};
void stx5197_configure_pwm(struct stx5197_pwm_config *config);
struct stx5197_ethernet_config {
enum {
stx5197_ethernet_mode_mii,
stx5197_ethernet_mode_rmii,
} mode;
int ext_clk;
int phy_bus;
int phy_addr;
struct stmmac_mdio_bus_data *mdio_bus_data;
};
void stx5197_configure_ethernet(struct stx5197_ethernet_config *config);
void stx5197_configure_usb(void);
#endif