mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-08-30 14:52:51 +08:00
gpio: SOC only has 64 gpio not 96.
Remove BANK_A Rename BANK_B to GPIO_00_31 Rename BACK_C to GPIO_32_63 Added also _INPUT, _DIRECTIOn registers
This commit is contained in:
+1
-1
@@ -428,7 +428,7 @@ void cmd_parser(void) __banked
|
|||||||
|
|
||||||
if (cmd_compare(0, "gpio")) {
|
if (cmd_compare(0, "gpio")) {
|
||||||
for (uint8_t idx = 0; idx < 3; idx++) {
|
for (uint8_t idx = 0; idx < 3; idx++) {
|
||||||
reg_read(RTL837X_REG_GPIO_A + (idx * 4));
|
reg_read(RTL837X_REG_GPIO_32_63_OUTPUT + (idx * 4));
|
||||||
print_string("GPIO ");
|
print_string("GPIO ");
|
||||||
write_char(idx + 'A');
|
write_char(idx + 'A');
|
||||||
write_char(':');
|
write_char(':');
|
||||||
|
|||||||
+2
-2
@@ -423,13 +423,13 @@ void port_stats_print(void) __banked
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else { // An SFP Module TODO: This is for 1 module devices
|
} else { // An SFP Module TODO: This is for 1 module devices
|
||||||
reg_read_m(RTL837X_REG_GPIO_B);
|
reg_read_m(RTL837X_REG_GPIO_00_31_INPUT);
|
||||||
if (!(sfr_data[0] & 0x40)) {
|
if (!(sfr_data[0] & 0x40)) {
|
||||||
print_string("SFP OK\t");
|
print_string("SFP OK\t");
|
||||||
} else {
|
} else {
|
||||||
print_string("NO SFP\t");
|
print_string("NO SFP\t");
|
||||||
}
|
}
|
||||||
reg_read_m(RTL837X_REG_GPIO_C);
|
reg_read_m(RTL837X_REG_GPIO_32_63_INPUT);
|
||||||
if (sfr_data[3] & 0x20) {
|
if (sfr_data[3] & 0x20) {
|
||||||
print_string("Down\t");
|
print_string("Down\t");
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+11
-6
@@ -44,19 +44,24 @@
|
|||||||
* Pin configuration (pinmux)
|
* Pin configuration (pinmux)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define RTL837X_PIN_MUX_A 0x7f8c
|
#define RTL837X_PIN_MUX_0 0x7f8c
|
||||||
#define RTL837X_PIN_MUX_B 0x7f90
|
#define RTL837X_PIN_MUX_1 0x7f90
|
||||||
|
|
||||||
#define RTL837X_REG_GPIO_A 0x40
|
// Output Registers
|
||||||
|
#define RTL837X_REG_GPIO_00_31_OUTPUT 0x3c
|
||||||
|
#define RTL837X_REG_GPIO_32_63_OUTPUT 0x40
|
||||||
// BIT 4 resets RTL8224 on 9000-9XH
|
// BIT 4 resets RTL8224 on 9000-9XH
|
||||||
|
|
||||||
#define RTL837X_REG_GPIO_B 0x44
|
// Input Registers
|
||||||
|
#define RTL837X_REG_GPIO_00_31_INPUT 0x44
|
||||||
|
#define RTL837X_REG_GPIO_32_63_INPUT 0x48
|
||||||
// Bit 1e cleared: SFP Module inserted on 9000-6XH (MOD_DEF0 pin)
|
// Bit 1e cleared: SFP Module inserted on 9000-6XH (MOD_DEF0 pin)
|
||||||
|
|
||||||
#define RTL837X_REG_GPIO_C 0x48
|
|
||||||
// BIT 5 set: SIGNAL LOS of SFP module on 9000-6XH (RX_LOS pin)
|
// BIT 5 set: SIGNAL LOS of SFP module on 9000-6XH (RX_LOS pin)
|
||||||
|
|
||||||
#define RTL837X_REG_GPIO_CONF_A 0x50
|
// Direction Registers, 0 = input, 1 = output
|
||||||
|
#define RTL837X_REG_GPIO_00_31_DIRECTION 0x4c
|
||||||
|
#define RTL837X_REG_GPIO_32_63_DIRECTION 0x50
|
||||||
// Configures IO direction for bank a
|
// Configures IO direction for bank a
|
||||||
|
|
||||||
#define RTL837X_REG_GPIO_EXT 0x63e8
|
#define RTL837X_REG_GPIO_EXT 0x63e8
|
||||||
|
|||||||
+18
-18
@@ -873,7 +873,7 @@ void sfp_print_info(uint8_t sfp)
|
|||||||
|
|
||||||
void handle_sfp(void)
|
void handle_sfp(void)
|
||||||
{
|
{
|
||||||
reg_read_m(RTL837X_REG_GPIO_B);
|
reg_read_m(RTL837X_REG_GPIO_00_31_INPUT);
|
||||||
if ((sfp_pins_last & 0x1) && (!(sfr_data[0] & 0x40))) {
|
if ((sfp_pins_last & 0x1) && (!(sfr_data[0] & 0x40))) {
|
||||||
sfp_pins_last &= ~0x01;
|
sfp_pins_last &= ~0x01;
|
||||||
print_string("\n<MODULE INSERTED> ");
|
print_string("\n<MODULE INSERTED> ");
|
||||||
@@ -893,7 +893,7 @@ void handle_sfp(void)
|
|||||||
print_string("\n<MODULE REMOVED>\n");
|
print_string("\n<MODULE REMOVED>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
reg_read_m(RTL837X_REG_GPIO_C);
|
reg_read_m(RTL837X_REG_GPIO_32_63_INPUT);
|
||||||
if ((sfp_pins_last & 0x2) && (!(sfr_data[3] & 0x20))) {
|
if ((sfp_pins_last & 0x2) && (!(sfr_data[3] & 0x20))) {
|
||||||
sfp_pins_last &= ~0x02;
|
sfp_pins_last &= ~0x02;
|
||||||
print_string("\n<SFP-RX OK>\n");
|
print_string("\n<SFP-RX OK>\n");
|
||||||
@@ -903,7 +903,7 @@ void handle_sfp(void)
|
|||||||
print_string("\n<SFP-RX LOS>\n");
|
print_string("\n<SFP-RX LOS>\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
reg_read_m(RTL837X_REG_GPIO_C);
|
reg_read_m(RTL837X_REG_GPIO_32_63_INPUT);
|
||||||
if ((sfp_pins_last & 0x10) && (!(sfr_data[1] & 0x04))) {
|
if ((sfp_pins_last & 0x10) && (!(sfr_data[1] & 0x04))) {
|
||||||
sfp_pins_last &= ~0x10;
|
sfp_pins_last &= ~0x10;
|
||||||
print_string("\n<MODULE 2 INSERTED> ");
|
print_string("\n<MODULE 2 INSERTED> ");
|
||||||
@@ -989,7 +989,7 @@ void idle(void)
|
|||||||
handle_sfp();
|
handle_sfp();
|
||||||
|
|
||||||
/* Button pressed on KL-8xhm-x2:
|
/* Button pressed on KL-8xhm-x2:
|
||||||
reg_read(RTL837X_REG_GPIO_C);
|
reg_read(RTL837X_REG_GPIO_32_63_INPUT);
|
||||||
if (!(sfr_data[2] & 0x40))
|
if (!(sfr_data[2] & 0x40))
|
||||||
print_string("Button pressed\n");
|
print_string("Button pressed\n");
|
||||||
*/
|
*/
|
||||||
@@ -1038,12 +1038,12 @@ void setup_external_irqs(void)
|
|||||||
void rtl8224_enable(void)
|
void rtl8224_enable(void)
|
||||||
{
|
{
|
||||||
// Set Pin 4 low
|
// Set Pin 4 low
|
||||||
reg_bit_clear(RTL837X_REG_GPIO_A, 4);
|
reg_bit_clear(RTL837X_REG_GPIO_32_63_OUTPUT, 4);
|
||||||
// Configure Pin as output
|
// Configure Pin as output
|
||||||
reg_bit_set(RTL837X_REG_GPIO_CONF_A, 4);
|
reg_bit_set(RTL837X_REG_GPIO_32_63_DIRECTION, 4);
|
||||||
delay(100);
|
delay(100);
|
||||||
// Set pin 4 high
|
// Set pin 4 high
|
||||||
reg_bit_set(RTL837X_REG_GPIO_A, 4);
|
reg_bit_set(RTL837X_REG_GPIO_32_63_OUTPUT, 4);
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1064,9 +1064,9 @@ void setup_clock(void)
|
|||||||
reg_write_m(RTL837X_REG_HW_CONF);
|
reg_write_m(RTL837X_REG_HW_CONF);
|
||||||
|
|
||||||
// Enable serial interface, set bit 0
|
// Enable serial interface, set bit 0
|
||||||
reg_read_m(RTL837X_PIN_MUX_B);
|
reg_read_m(RTL837X_PIN_MUX_1);
|
||||||
sfr_mask_data(0, 0x1, 0x1);
|
sfr_mask_data(0, 0x1, 0x1);
|
||||||
reg_write_m(RTL837X_PIN_MUX_B);
|
reg_write_m(RTL837X_PIN_MUX_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1286,7 +1286,7 @@ void led_config_9xh(void)
|
|||||||
reg_bit_clear(0x65dc, 0x1b);
|
reg_bit_clear(0x65dc, 0x1b);
|
||||||
|
|
||||||
// r7f8c:30000000 R7f8c-30000000 r7f8c:30000000 R7f8c-38000000
|
// r7f8c:30000000 R7f8c-30000000 r7f8c:30000000 R7f8c-38000000
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1b);
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1b);
|
||||||
|
|
||||||
// R6548-0041017f
|
// R6548-0041017f
|
||||||
REG_SET(0x6548, 0x0041017f);
|
REG_SET(0x6548, 0x0041017f);
|
||||||
@@ -1338,13 +1338,13 @@ void led_config(void)
|
|||||||
|
|
||||||
// Set bits 1b/1d of 0x7f8c: r7f8c:30000000 R7f8c-30000000 r7f8c:30000000 R7f8c-38000000
|
// Set bits 1b/1d of 0x7f8c: r7f8c:30000000 R7f8c-30000000 r7f8c:30000000 R7f8c-38000000
|
||||||
if (nSFPPorts == 2) {
|
if (nSFPPorts == 2) {
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1b); // R7f8c-28000000
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1b); // R7f8c-28000000
|
||||||
reg_bit_clear(RTL837X_PIN_MUX_A, 0x1c); // R7f8c-28000000
|
reg_bit_clear(RTL837X_PIN_MUX_0, 0x1c); // R7f8c-28000000
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1d); // R7f8c-28000000
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1d); // R7f8c-28000000
|
||||||
} else {
|
} else {
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1d);
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1d);
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1c);
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1c);
|
||||||
reg_bit_set(RTL837X_PIN_MUX_A, 0x1b);
|
reg_bit_set(RTL837X_PIN_MUX_0, 0x1b);
|
||||||
}
|
}
|
||||||
// LED setup
|
// LED setup
|
||||||
// r6520:0021fdb0 R6520-0021e7b0 r6520:0021e7b0 R6520-0021e6b0 r65f8:00000018 R65f8-00000018 R65fc-fffff000 r6600:00000000 R6600-0000000f r65dc:5fffff00 R65dc-7fffff00 r65dc:7fffff00 R65dc-77ffff00
|
// r6520:0021fdb0 R6520-0021e7b0 r6520:0021e7b0 R6520-0021e6b0 r65f8:00000018 R65f8-00000018 R65fc-fffff000 r6600:00000000 R6600-0000000f r65dc:5fffff00 R65dc-7fffff00 r65dc:7fffff00 R65dc-77ffff00
|
||||||
@@ -1620,10 +1620,10 @@ void setup_i2c(void)
|
|||||||
REG_SET(0x041c, 0);
|
REG_SET(0x041c, 0);
|
||||||
|
|
||||||
// HW Control register, enable I2C?
|
// HW Control register, enable I2C?
|
||||||
reg_read_m(RTL837X_PIN_MUX_B);
|
reg_read_m(RTL837X_PIN_MUX_1);
|
||||||
sfr_mask_data(3, 0x20, 0x00); // Clear bit 29
|
sfr_mask_data(3, 0x20, 0x00); // Clear bit 29
|
||||||
sfr_mask_data(0, 0x60, 0x40); // Set bits 5-6 to 0b10
|
sfr_mask_data(0, 0x60, 0x40); // Set bits 5-6 to 0b10
|
||||||
reg_write_m(RTL837X_PIN_MUX_B);
|
reg_write_m(RTL837X_PIN_MUX_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user