mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-25 22:10:00 +07:00
c1978e1dfb
DM6467T (T for Turbo) is a newer and faster DM6467 part from TI. The new part supports 1080p video and has the ARM running at 495MHz. More SoC information: http://focus.ti.com/docs/prod/folders/print/tms320dm6467t.html Spectrum Digital, Inc has a new EVM for this part. It is _mostly_ same as the older DM6467 EVM except for a 33MHz crystal input and THS8200 video encoder for 1080p support. The meat of this patch is dedicated to initializing the crystal frequency from EVM board file. Additional notes: I did consider some alternative ways to make the crystal input board specific including - (1) having board code initialize the crystal frequency using the first member of soc_info->cpu_clks array (2) introducing a new ref_clk_rate member in soc_info structure. But, the current way seems to be the simplest and least intruding considering that both the clock array and SoC info structure are actually private to the SoC file. Also the fact that davinci_common_init() initializes both the soc_info and clocks in one go. Signed-off-by: Sekhar Nori <nsekhar@ti.com> Signed-off-by: Kevin Hilman <khilman@deeprootsystems.com>
94 lines
2.2 KiB
C
94 lines
2.2 KiB
C
/*
|
|
* Chip specific defines for DM646x SoC
|
|
*
|
|
* Author: Kevin Hilman, Deep Root Systems, LLC
|
|
*
|
|
* 2007 (c) Deep Root Systems, LLC. This file is licensed under
|
|
* the terms of the GNU General Public License version 2. This program
|
|
* is licensed "as is" without any warranty of any kind, whether express
|
|
* or implied.
|
|
*/
|
|
#ifndef __ASM_ARCH_DM646X_H
|
|
#define __ASM_ARCH_DM646X_H
|
|
|
|
#include <mach/hardware.h>
|
|
#include <mach/emac.h>
|
|
#include <mach/asp.h>
|
|
#include <linux/i2c.h>
|
|
#include <linux/videodev2.h>
|
|
#include <linux/clk.h>
|
|
|
|
#define DM646X_EMAC_BASE (0x01C80000)
|
|
#define DM646X_EMAC_CNTRL_OFFSET (0x0000)
|
|
#define DM646X_EMAC_CNTRL_MOD_OFFSET (0x1000)
|
|
#define DM646X_EMAC_CNTRL_RAM_OFFSET (0x2000)
|
|
#define DM646X_EMAC_MDIO_OFFSET (0x4000)
|
|
#define DM646X_EMAC_CNTRL_RAM_SIZE (0x2000)
|
|
|
|
#define DM646X_ATA_REG_BASE (0x01C66000)
|
|
|
|
void __init dm646x_init(void);
|
|
void __init dm646x_init_ide(void);
|
|
void __init dm646x_init_mcasp0(struct snd_platform_data *pdata);
|
|
void __init dm646x_init_mcasp1(struct snd_platform_data *pdata);
|
|
void __init dm646x_board_setup_refclk(struct clk *clk);
|
|
|
|
void dm646x_video_init(void);
|
|
|
|
enum vpif_if_type {
|
|
VPIF_IF_BT656,
|
|
VPIF_IF_BT1120,
|
|
VPIF_IF_RAW_BAYER
|
|
};
|
|
|
|
struct vpif_interface {
|
|
enum vpif_if_type if_type;
|
|
unsigned hd_pol:1;
|
|
unsigned vd_pol:1;
|
|
unsigned fid_pol:1;
|
|
};
|
|
|
|
struct vpif_subdev_info {
|
|
const char *name;
|
|
struct i2c_board_info board_info;
|
|
u32 input;
|
|
u32 output;
|
|
unsigned can_route:1;
|
|
struct vpif_interface vpif_if;
|
|
};
|
|
|
|
struct vpif_display_config {
|
|
int (*set_clock)(int, int);
|
|
struct vpif_subdev_info *subdevinfo;
|
|
int subdev_count;
|
|
const char **output;
|
|
int output_count;
|
|
const char *card_name;
|
|
};
|
|
|
|
struct vpif_input {
|
|
struct v4l2_input input;
|
|
const char *subdev_name;
|
|
};
|
|
|
|
#define VPIF_CAPTURE_MAX_CHANNELS 2
|
|
|
|
struct vpif_capture_chan_config {
|
|
const struct vpif_input *inputs;
|
|
int input_count;
|
|
};
|
|
|
|
struct vpif_capture_config {
|
|
int (*setup_input_channel_mode)(int);
|
|
int (*setup_input_path)(int, const char *);
|
|
struct vpif_capture_chan_config chan_config[VPIF_CAPTURE_MAX_CHANNELS];
|
|
struct vpif_subdev_info *subdev_info;
|
|
int subdev_count;
|
|
const char *card_name;
|
|
};
|
|
|
|
void dm646x_setup_vpif(struct vpif_display_config *,
|
|
struct vpif_capture_config *);
|
|
|
|
#endif /* __ASM_ARCH_DM646X_H */
|