summaryrefslogblamecommitdiffstatshomepage
path: root/src/devices/video/md4330b.h
blob: d372f2b88deab0a03733314b796dc59dea4b673d (plain) (tree)


























































































                                                                                                                              
// license:BSD-3-Clause
// copyright-holders:hap
/*

  Mitel MD4330B / MD4332B LCD Driver

*/

#ifndef MAME_VIDEO_MD4330B_H
#define MAME_VIDEO_MD4330B_H

#pragma once

// pinout reference

/*
             ____   ____                           ____   ____
    _T/C  1 |*   \_/    | 40 VDD          _T/C  1 |*   \_/    | 40 VDD
      DI  2 |           | 39 CLK            DI  2 |           | 39 CLK
      NC  3 |           | 38 RST            NC  3 |           | 38 RST
      NC  4 |           | 37 DO             Q1  4 |           | 37 DO
      Q1  5 |           | 36 Q30            Q2  5 |           | 36 Q32
      Q2  6 |           | 35 Q29            Q3  6 |           | 35 Q31
      Q3  7 |           | 34 Q28            Q4  7 |           | 34 Q30
      Q4  8 |           | 33 Q27            Q5  8 |           | 33 Q29
      Q5  9 |           | 32 Q26            Q6  9 |           | 32 Q28
      Q6 10 |  MD4330BC | 31 Q25            Q7 10 |  MD4332BC | 31 Q27
      Q7 11 |  MD4330BE | 30 Q24            Q8 11 |  MD4332BE | 30 Q26
      Q8 12 |           | 29 Q23            Q9 12 |           | 29 Q25
      Q9 13 |           | 28 Q22           Q10 13 |           | 28 Q24
     Q10 14 |           | 27 Q21           Q11 14 |           | 27 Q23
     Q11 15 |           | 26 Q20           Q12 15 |           | 26 Q22
     Q12 16 |           | 25 Q19           Q13 16 |           | 25 Q21
     Q13 17 |           | 24 Q18           Q14 17 |           | 24 Q20
     Q14 18 |           | 23 Q17           Q15 18 |           | 23 Q19
     Q15 19 |           | 22 Q16           Q16 19 |           | 22 Q18
     VSS 20 |___________| 21 NC            VSS 20 |___________| 21 Q17

*/


class md4330b_device : public device_t
{
public:
	md4330b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);

	// configuration helpers
	auto write_q() { return m_write_q.bind(); }
	auto write_do() { return m_write_do.bind(); }

	DECLARE_WRITE_LINE_MEMBER(clk_w);
	DECLARE_WRITE_LINE_MEMBER(tc_w) { m_tc = (state) ? 1 : 0; update_q(); }
	DECLARE_WRITE_LINE_MEMBER(di_w) { m_di = (state) ? 1 : 0; }
	DECLARE_WRITE_LINE_MEMBER(rst_w) { m_rst = (state) ? 1 : 0; }
	DECLARE_READ_LINE_MEMBER(do_r) { return m_do; }

protected:
	md4330b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 qmax);

	// device-level overrides
	virtual void device_start() override;

	void update_q();

	const u8 m_qmax; // number of Q pins
	u32 m_shift;

	// pin state
	int m_clk;
	int m_di;
	int m_do;
	int m_rst;
	int m_tc;

	// callbacks
	devcb_write32 m_write_q;
	devcb_write_line m_write_do;
};


class md4332b_device : public md4330b_device
{
public:
	md4332b_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
};


DECLARE_DEVICE_TYPE(MD4330B, md4330b_device)
DECLARE_DEVICE_TYPE(MD4332B, md4332b_device)

#endif // MAME_VIDEO_MD4330B_H