aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/smsc_ece1099.txt
blob: 079277421eaf868450d2731f6cffefd1608786bf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
=================================================
Msc Keyboard Scan Expansion/GPIO Expansion device
=================================================

What is smsc-ece1099?
----------------------

The ECE1099 is a 40-Pin 3.3V Keyboard Scan Expansion
or GPIO Expansion device. The device supports a keyboard
scan matrix of 23x8. The device is connected to a Master
via the SMSC BC-Link interface or via the SMBus.
Keypad scan Input(KSI) and Keypad Scan Output(KSO) signals
are multiplexed with GPIOs.

Interrupt generation
--------------------

Interrupts can be generated by an edge detection on a GPIO
pin or an edge detection on one of the bus interface pins.
Interrupts can also be detected on the keyboard scan interface.
The bus interrupt pin (BC_INT# or SMBUS_INT#) is asserted if
any bit in one of the Interrupt Status registers is 1 and
the corresponding Interrupt Mask bit is also 1.

In order for software to determine which device is the source
of an interrupt, it should first read the Group Interrupt Status Register
to determine which Status register group is a source for the interrupt.
Software should read both the Status register and the associated Mask register,
then AND the two values together. Bits that are 1 in the result of the AND
are active interrupts. Software clears an interrupt by writing a 1 to the
corresponding bit in the Status register.

Communication Protocol
----------------------

- SMbus slave Interface
	The host processor communicates with the ECE1099 device
	through a series of read/write registers via the SMBus
	interface. SMBus is a serial communication protocol between
	a computer host and its peripheral devices. The SMBus data
	rate is 10KHz minimum to 400 KHz maximum

- Slave Bus Interface
	The ECE1099 device SMBus implementation is a subset of the
	SMBus interface to the host. The device is a slave-only SMBus device.
	The implementation in the device is a subset of SMBus since it
	only supports four protocols.

	The Write Byte, Read Byte, Send Byte, and Receive Byte protocols are the
	only valid SMBus protocols for the device.

- BC-LinkTM Interface
	The BC-Link is a proprietary bus that allows communication
	between a Master device and a Companion device. The Master
	device uses this serial bus to read and write registers
	located on the Companion device. The bus comprises three signals,
	BC_CLK, BC_DAT and BC_INT#. The Master device always provides the
	clock, BC_CLK, and the Companion device is the source for an
	independent asynchronous interrupt signal, BC_INT#. The ECE1099
	supports BC-Link speeds up to 24MHz.
PCI: kirin: Support PERST# GPIOs for HiKey970 external PEX 8606 bridgeMauro Carvalho Chehab1-32/+233 2021-11-04PCI: apple: Set up reference clocks when probingAlyssa Rosenzweig1-0/+46 2021-11-04PCI: apple: Add initial hardware bring-upAlyssa Rosenzweig4-0/+259 2021-11-04PCI: of: Allow matching of an interrupt-map local to a PCI deviceMarc Zyngier1-2/+8 2021-11-04of/irq: Allow matching of an interrupt-map local to an interrupt controllerMarc Zyngier1-5/+12 2021-11-04irqdomain: Make of_phandle_args_to_fwspec() generally availableMarc Zyngier2-3/+7 2021-11-04PCI: Do not enable AtomicOps on VFsSelvin Xavier1-0/+8 2021-11-04PCI: vmd: Drop redundant includes of <asm/device.h>, <asm/msi.h>Krzysztof Wilczyński1-2/+0 2021-11-03PCI: cadence: Add cdns_plat_pcie_probe() missing returnLi Chen1-0/+2 2021-11-03PCI: j721e: Fix j721e_pcie_probe() error pathChristophe JAILLET1-1/+1 2021-11-02PCI: cpqphp: Use <linux/io.h> instead of <asm/io.h>Krzysztof Wilczyński1-1/+1 2021-11-02PCI: kirin: Use regmap for APB registersMauro Carvalho Chehab1-23/+26 2021-11-02PCI: kirin: Add support for a PHY layerMauro Carvalho Chehab1-14/+79 2021-11-02PCI: kirin: Reorganize the PHY logic inside the driverMauro Carvalho Chehab1-122/+170 2021-10-29PCI: aardvark: Fix support for PCI_ROM_ADDRESS1 on emulated bridgePali Rohár1-0/+9 2021-10-29PCI: aardvark: Fix support for PCI_BRIDGE_CTL_BUS_RESET on emulated bridgePali Rohár1-0/+27 2021-10-29PCI: aardvark: Set PCI Bridge Class Code to PCI BridgePali Rohár1-0/+20 2021-10-29PCI: aardvark: Fix support for bus mastering and PCI_COMMAND on emulated bridgePali Rohár1-16/+38 2021-10-29PCI: aardvark: Read all 16-bits from PCIE_MSI_PAYLOAD_REGMarek Behún1-1/+6 2021-10-29PCI: aardvark: Fix return value of MSI domain .alloc() methodMarek Behún1-1/+1 2021-10-29PCI: pci-bridge-emul: Fix emulation of W1C bitsMarek Behún1-0/+13 2021-10-27MAINTAINERS: Update PCI subsystem informationKrzysztof Wilczyński1-4/+13 2021-10-27PCI: Prefer 'unsigned int' over bare 'unsigned'Krzysztof Wilczyński7-16/+19 2021-10-26PCI: Remove redundant 'rc' initializationColin Ian King1-1/+1 2021-10-25cxgb3: Remove seeprom_write and use VPD APIHeiner Kallweit3-44/+3 2021-10-25cxgb3: Use VPD API in t3_seeprom_wp()Heiner Kallweit1-1/+8 2021-10-25cxgb3: Remove t3_seeprom_read and use VPD APIHeiner Kallweit3-64/+18 2021-10-25PCI/VPD: Use pci_read_vpd_any() in pci_vpd_size()Heiner Kallweit1-12/+13 2021-10-21MAINTAINERS: Add Sergio Paracuellos as MT7621 PCIe maintainerSergio Paracuellos1-0/+6 2021-10-21PCI: mt7621: Add MediaTek MT7621 PCIe host controller driverSergio Paracuellos10-134/+24