sonic-buildimage/platform/nephos/sonic-platform-modules-cig/cs6436-56p/modules/i2c-algo-lpc.h

223 lines
6.6 KiB
C
Raw Normal View History

[Devices] Add new device CIG CS6436-56P (#2587) * Add new device CIG CS6436-56P * Delete minigraph.xml It isn't necessary in the current system, just delete it * Update qos.json.j2 * Update port_config.ini Add the speed column. The cmd to show interface status as: root@switch1:~# show interface status Interface Lanes Speed MTU Alias Oper Admin Type Asym PFC ----------- --------------- ------- ----- ------------ ------ ------- ------ ---------- Ethernet0 8 25G 9100 Ethernet1/1 up up SFP N/A Ethernet1 9 25G 9100 Ethernet2/1 up up SFP N/A Ethernet2 10 25G 9100 Ethernet3/1 down down N/A N/A Ethernet3 11 25G 9100 Ethernet4/1 down down N/A N/A Ethernet4 12 25G 9100 Ethernet5/1 down down N/A N/A Ethernet5 13 25G 9100 Ethernet6/1 down down N/A N/A Ethernet6 14 25G 9100 Ethernet7/1 down down N/A N/A Ethernet7 15 25G 9100 Ethernet8/1 down down N/A N/A Ethernet8 16 25G 9100 Ethernet9/1 down down N/A N/A Ethernet9 17 25G 9100 Ethernet10/1 down down N/A N/A Ethernet10 18 25G 9100 Ethernet11/1 down down N/A N/A Ethernet11 19 25G 9100 Ethernet12/1 down down N/A N/A Ethernet12 20 25G 9100 Ethernet13/1 down down N/A N/A Ethernet13 21 25G 9100 Ethernet14/1 down down N/A N/A Ethernet14 22 25G 9100 Ethernet15/1 down down N/A N/A Ethernet15 23 25G 9100 Ethernet16/1 down down N/A N/A Ethernet16 32 25G 9100 Ethernet17/1 down down N/A N/A Ethernet17 33 25G 9100 Ethernet18/1 down down N/A N/A Ethernet18 34 25G 9100 Ethernet19/1 down down N/A N/A Ethernet19 35 25G 9100 Ethernet20/1 down down N/A N/A Ethernet20 40 25G 9100 Ethernet21/1 down down N/A N/A Ethernet21 41 25G 9100 Ethernet22/1 down down N/A N/A Ethernet22 42 25G 9100 Ethernet23/1 down down N/A N/A Ethernet23 43 25G 9100 Ethernet24/1 down down N/A N/A Ethernet24 48 25G 9100 Ethernet25/1 down down N/A N/A Ethernet25 49 25G 9100 Ethernet26/1 down down N/A N/A Ethernet26 50 25G 9100 Ethernet27/1 down down N/A N/A Ethernet27 51 25G 9100 Ethernet28/1 down down N/A N/A Ethernet28 56 25G 9100 Ethernet29/1 down down N/A N/A Ethernet29 57 25G 9100 Ethernet30/1 down down N/A N/A Ethernet30 58 25G 9100 Ethernet31/1 down down N/A N/A Ethernet31 59 25G 9100 Ethernet32/1 down down N/A N/A Ethernet32 64 25G 9100 Ethernet33/1 down down N/A N/A Ethernet33 65 25G 9100 Ethernet34/1 down down N/A N/A Ethernet34 66 25G 9100 Ethernet35/1 down down N/A N/A Ethernet35 67 25G 9100 Ethernet36/1 down down N/A N/A Ethernet36 68 25G 9100 Ethernet37/1 down down N/A N/A Ethernet37 69 25G 9100 Ethernet38/1 down down N/A N/A Ethernet38 70 25G 9100 Ethernet39/1 down down N/A N/A Ethernet39 71 25G 9100 Ethernet40/1 down down N/A N/A Ethernet40 72 25G 9100 Ethernet41/1 down down N/A N/A Ethernet41 73 25G 9100 Ethernet42/1 down down N/A N/A Ethernet42 74 25G 9100 Ethernet43/1 down down N/A N/A Ethernet43 75 25G 9100 Ethernet44/1 down down N/A N/A Ethernet44 76 25G 9100 Ethernet45/1 down down N/A N/A Ethernet45 77 25G 9100 Ethernet46/1 down down N/A N/A Ethernet46 78 25G 9100 Ethernet47/1 down down N/A N/A Ethernet47 79 25G 9100 Ethernet48/1 down down N/A N/A Ethernet48 84,85,86,87 100G 9100 Ethernet49/1 up up QSFP28 N/A Ethernet49 80,81,82,83 100G 9100 Ethernet50/1 up up QSFP28 N/A Ethernet50 92,93,94,95 100G 9100 Ethernet51/1 down down N/A N/A Ethernet51 88,89,90,91 100G 9100 Ethernet52/1 down down N/A N/A Ethernet52 108,109,110,111 100G 9100 Ethernet53/1 down down N/A N/A Ethernet53 104,105,106,107 100G 9100 Ethernet54/1 down down N/A N/A Ethernet54 116,117,118,119 100G 9100 Ethernet55/1 down down N/A N/A Ethernet55 112,113,114,115 100G 9100 Ethernet56/1 down down N/A N/A root@switch1:~#
2019-04-18 04:27:39 -05:00
/* --------------------------------------------------------------------
* A hwmon driver for the CIG cs6436-56P
*
* Copyright (C) 2018 Cambridge, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* -------------------------------------------------------------------- */
#ifndef I2C_LPC_H
#define I2C_LPC_H 1
/* ----- Control register bits ---------------------------------------- */
#define I2C_LPC_PIN 0x80
#define I2C_LPC_ESO 0x40
#define I2C_LPC_ES1 0x20
#define I2C_LPC_ES2 0x10
#define I2C_LPC_ENI 0x08
#define I2C_LPC_STO 0x40
#define I2C_LPC_ACK 0x01
/*command register*/
#define I2C_LPC_STA 0x80
#define I2C_LPC_ABT 0x40
/*status register*/
#define I2C_LPC_TBE 0x02
#define I2C_LPC_IBB 0x80
#define I2C_LPC_RBF 0x01
#define I2C_LPC_TD 0x08
#define I2C_LPC_START I2C_LPC_STA
#define I2C_LPC_STOP I2C_LPC_STO
#define I2C_LPC_REPSTART I2C_LPC_STA
#define I2C_LPC_IDLE
/* ----- Status register bits ----------------------------------------- */
/*#define I2C_LPC_PIN 0x80 as above*/
#define I2C_LPC_INI 0x40 /* 1 if not initialized */
#define I2C_LPC_STS 0x20
#define I2C_LPC_BER 0x10
#define I2C_LPC_AD0 0x08
#define I2C_LPC_LRB 0x08
#define I2C_LPC_AAS 0x04
#define I2C_LPC_LAB 0x02
#define I2C_LPC_BB 0x80
/* ----- Chip clock frequencies --------------------------------------- */
#define I2C_LPC_CLK3 0x00
#define I2C_LPC_CLK443 0x10
#define I2C_LPC_CLK6 0x14
#define I2C_LPC_CLK 0x18
[Devices] Add new device CIG CS6436-56P (#2587) * Add new device CIG CS6436-56P * Delete minigraph.xml It isn't necessary in the current system, just delete it * Update qos.json.j2 * Update port_config.ini Add the speed column. The cmd to show interface status as: root@switch1:~# show interface status Interface Lanes Speed MTU Alias Oper Admin Type Asym PFC ----------- --------------- ------- ----- ------------ ------ ------- ------ ---------- Ethernet0 8 25G 9100 Ethernet1/1 up up SFP N/A Ethernet1 9 25G 9100 Ethernet2/1 up up SFP N/A Ethernet2 10 25G 9100 Ethernet3/1 down down N/A N/A Ethernet3 11 25G 9100 Ethernet4/1 down down N/A N/A Ethernet4 12 25G 9100 Ethernet5/1 down down N/A N/A Ethernet5 13 25G 9100 Ethernet6/1 down down N/A N/A Ethernet6 14 25G 9100 Ethernet7/1 down down N/A N/A Ethernet7 15 25G 9100 Ethernet8/1 down down N/A N/A Ethernet8 16 25G 9100 Ethernet9/1 down down N/A N/A Ethernet9 17 25G 9100 Ethernet10/1 down down N/A N/A Ethernet10 18 25G 9100 Ethernet11/1 down down N/A N/A Ethernet11 19 25G 9100 Ethernet12/1 down down N/A N/A Ethernet12 20 25G 9100 Ethernet13/1 down down N/A N/A Ethernet13 21 25G 9100 Ethernet14/1 down down N/A N/A Ethernet14 22 25G 9100 Ethernet15/1 down down N/A N/A Ethernet15 23 25G 9100 Ethernet16/1 down down N/A N/A Ethernet16 32 25G 9100 Ethernet17/1 down down N/A N/A Ethernet17 33 25G 9100 Ethernet18/1 down down N/A N/A Ethernet18 34 25G 9100 Ethernet19/1 down down N/A N/A Ethernet19 35 25G 9100 Ethernet20/1 down down N/A N/A Ethernet20 40 25G 9100 Ethernet21/1 down down N/A N/A Ethernet21 41 25G 9100 Ethernet22/1 down down N/A N/A Ethernet22 42 25G 9100 Ethernet23/1 down down N/A N/A Ethernet23 43 25G 9100 Ethernet24/1 down down N/A N/A Ethernet24 48 25G 9100 Ethernet25/1 down down N/A N/A Ethernet25 49 25G 9100 Ethernet26/1 down down N/A N/A Ethernet26 50 25G 9100 Ethernet27/1 down down N/A N/A Ethernet27 51 25G 9100 Ethernet28/1 down down N/A N/A Ethernet28 56 25G 9100 Ethernet29/1 down down N/A N/A Ethernet29 57 25G 9100 Ethernet30/1 down down N/A N/A Ethernet30 58 25G 9100 Ethernet31/1 down down N/A N/A Ethernet31 59 25G 9100 Ethernet32/1 down down N/A N/A Ethernet32 64 25G 9100 Ethernet33/1 down down N/A N/A Ethernet33 65 25G 9100 Ethernet34/1 down down N/A N/A Ethernet34 66 25G 9100 Ethernet35/1 down down N/A N/A Ethernet35 67 25G 9100 Ethernet36/1 down down N/A N/A Ethernet36 68 25G 9100 Ethernet37/1 down down N/A N/A Ethernet37 69 25G 9100 Ethernet38/1 down down N/A N/A Ethernet38 70 25G 9100 Ethernet39/1 down down N/A N/A Ethernet39 71 25G 9100 Ethernet40/1 down down N/A N/A Ethernet40 72 25G 9100 Ethernet41/1 down down N/A N/A Ethernet41 73 25G 9100 Ethernet42/1 down down N/A N/A Ethernet42 74 25G 9100 Ethernet43/1 down down N/A N/A Ethernet43 75 25G 9100 Ethernet44/1 down down N/A N/A Ethernet44 76 25G 9100 Ethernet45/1 down down N/A N/A Ethernet45 77 25G 9100 Ethernet46/1 down down N/A N/A Ethernet46 78 25G 9100 Ethernet47/1 down down N/A N/A Ethernet47 79 25G 9100 Ethernet48/1 down down N/A N/A Ethernet48 84,85,86,87 100G 9100 Ethernet49/1 up up QSFP28 N/A Ethernet49 80,81,82,83 100G 9100 Ethernet50/1 up up QSFP28 N/A Ethernet50 92,93,94,95 100G 9100 Ethernet51/1 down down N/A N/A Ethernet51 88,89,90,91 100G 9100 Ethernet52/1 down down N/A N/A Ethernet52 108,109,110,111 100G 9100 Ethernet53/1 down down N/A N/A Ethernet53 104,105,106,107 100G 9100 Ethernet54/1 down down N/A N/A Ethernet54 116,117,118,119 100G 9100 Ethernet55/1 down down N/A N/A Ethernet55 112,113,114,115 100G 9100 Ethernet56/1 down down N/A N/A root@switch1:~#
2019-04-18 04:27:39 -05:00
#define I2C_LPC_CLK12 0x1c
/* ----- transmission frequencies ------------------------------------- */
#define I2C_LPC_TRNS90 0x00 /* 90 kHz */
#define I2C_LPC_TRNS45 0x01 /* 45 kHz */
#define I2C_LPC_TRNS11 0x02 /* 11 kHz */
#define I2C_LPC_TRNS15 0x03 /* 1.5 kHz */
#define I2C_LPC_OWNADR 0
#define I2C_LPC_INTREG I2C_LPC_ES2
#define I2C_LPC_CLKREG I2C_LPC_ES1
#define I2C_LPC_REG_TEST 0x01
#define I2C_LPC_REG_BUS_SEL 0x80
#define I2C_LPC_REG_DEVICE_ADDR 0x81
#define I2C_LPC_REG_BYTE_COUNT 0x83
#define I2C_LPC_REG_COMMAND 0x84
#define I2C_LPC_REG_STATUS 0x85
#define I2C_LPC_REG_DATA_RX1 0x86
#define I2C_LPC_REG_DATA_RX2 0x87
#define I2C_LPC_REG_DATA_RX3 0x88
#define I2C_LPC_REG_DATA_RX4 0x89
#define I2C_LPC_REG_DATA_TX1 0x8a
#define I2C_LPC_REG_DATA_TX2 0x8b
#define I2C_LPC_REG_DATA_TX3 0x8c
#define I2C_LPC_REG_DATA_TX4 0x8d
#define ADDR_REG_SFP_STATUS_ADDR 0X62 //reg addr +R/W# //1031
#define ADDR_REG_SFP_STATUS_TX 0X63 // write data
#define ADDR_REG_SFP_STATUS_RX 0X64 //read data
#define ADDR_REG_SFP_STATUS_COMMAND 0X65 //cmd bit7=1,go
#define ADDR_REG_SFP_STATUS_STATUS 0X66 //status
#define CPLD_MASTER_INTERRUPT_STATUS_REG 0x20
#define CPLD_MASTER_INTERRUPT_MASK_REG 0x21
#define CPLD_MASTER_INTERRUPT_ALL 0x3f
#define CPLD_MASTER_INTERRUPT_CPLD2 0x20
#define CPLD_MASTER_INTERRUPT_CPLD1 0x10
#define CPLD_MASTER_INTERRUPT_PSU2 0x08
#define CPLD_MASTER_INTERRUPT_PSU1 0x04
#define CPLD_MASTER_INTERRUPT_6320 0x02
#define CPLD_MASTER_INTERRUPT_LSW 0x01
#define CPLD_SLAVE1_INTERRUPT_STATUS_L_REG 0x20
#define CPLD_SLAVE1_INTERRUPT_STATUS_H_REG 0x21
#define CPLD_SLAVE2_INTERRUPT_STATUS_L_REG 0x22
#define CPLD_SLAVE2_INTERRUPT_STATUS_H_REG 0x23
#define CPLD_SLAVE1_INTERRUPT_MASK_REG 0x24
#define CPLD_SLAVE2_INTERRUPT_MASK_REG 0x25
#define CPLD_SLAVE1_PRESENT08_REG 0x01
#define CPLD_SLAVE1_PRESENT16_REG 0x02
#define CPLD_SLAVE1_PRESENT24_REG 0x03
#define CPLD_SLAVE2_PRESENT32_REG 0x04
#define CPLD_SLAVE2_PRESENT40_REG 0x05
#define CPLD_SLAVE2_PRESENT48_REG 0x06
#define CPLD_SLAVE1_RX_LOST08_REG 0x07
#define CPLD_SLAVE1_RX_LOST16_REG 0x08
#define CPLD_SLAVE1_RX_LOST24_REG 0x09
#define CPLD_SLAVE2_RX_LOST32_REG 0x0a
#define CPLD_SLAVE2_RX_LOST40_REG 0x0b
#define CPLD_SLAVE2_RX_LOST48_REG 0x0c
#define CPLD_SLAVE1_TX_FAULT08_REG 0x0d
#define CPLD_SLAVE1_TX_FAULT16_REG 0x0e
#define CPLD_SLAVE1_TX_FAULT24_REG 0x0f
#define CPLD_SLAVE2_TX_FAULT32_REG 0x10
#define CPLD_SLAVE2_TX_FAULT40_REG 0x11
#define CPLD_SLAVE2_TX_FAULT48_REG 0x12
#define CPLD_SLAVE2_PRESENT56_REG 0x19
#define CPLD_SLAVE2_QSFP_CR56_REG 0x1a
#define CPLD_SLAVE1_INTERRUPT_PRESENT08 0x0001
#define CPLD_SLAVE1_INTERRUPT_PRESENT16 0x0002
#define CPLD_SLAVE1_INTERRUPT_PRESENT24 0x0004
#define CPLD_SLAVE2_INTERRUPT_PRESENT32 0x0001
#define CPLD_SLAVE2_INTERRUPT_PRESENT40 0x0002
#define CPLD_SLAVE2_INTERRUPT_PRESENT48 0x0004
#define CPLD_SLAVE2_INTERRUPT_QSFP_CR56 0x0200
#define CPLD_SLAVE2_INTERRUPT_PRESENT56 0x0400
#define CPLD_SLAVE1_INTERRUPT_RX_LOST08 0x0008
#define CPLD_SLAVE1_INTERRUPT_RX_LOST16 0x0010
#define CPLD_SLAVE1_INTERRUPT_RX_LOST24 0x0020
#define CPLD_SLAVE2_INTERRUPT_RX_LOST32 0x0008
#define CPLD_SLAVE2_INTERRUPT_RX_LOST40 0x0010
#define CPLD_SLAVE2_INTERRUPT_RX_LOST48 0x0020
#define CPLD_SLAVE1_INTERRUPT_TX_FAULT08 0x0040
#define CPLD_SLAVE1_INTERRUPT_TX_FAULT16 0x0080
#define CPLD_SLAVE1_INTERRUPT_TX_FAULT24 0x0100
#define CPLD_SLAVE2_INTERRUPT_TX_FAULT32 0x0040
#define CPLD_SLAVE2_INTERRUPT_TX_FAULT40 0x0080
#define CPLD_SLAVE2_INTERRUPT_TX_FAULT48 0x0100
#define WAIT_TIME_OUT_COUNT 100
struct i2c_algo_lpc_data {
void *data; /* private data for lolevel routines */
void (*setlpc) (void *data, int ctl, int val);
int (*getlpc) (void *data, int ctl);
int (*getown) (void *data);
int (*getclock) (void *data);
void (*waitforpin) (void *data);
int (*xfer_begin) (void *data);
int (*xfer_end) (void *data);
/* Multi-master lost arbitration back-off delay (msecs)
* This should be set by the bus adapter or knowledgable client
* if bus is multi-mastered, else zero
*/
unsigned long lab_mdelay;
};
struct subsys_private {
struct kset subsys;
struct kset *devices_kset;
struct list_head interfaces;
struct mutex mutex;
struct kset *drivers_kset;
struct klist klist_devices;
struct klist klist_drivers;
struct blocking_notifier_head bus_notifier;
unsigned int drivers_autoprobe:1;
struct bus_type *bus;
struct kset glue_dirs;
struct class *class;
};
void cs6436_56p_sysfs_add_client(struct i2c_client *client);
void cs6436_56p_sysfs_remove_client(struct i2c_client *client);
#endif /* I2C_LPC8584_H */