Modifications to compile for Kernel 6.1.12. master
authorBenjamin Braatz <bb@bbraatz.eu>
Tue, 21 Feb 2023 22:07:11 +0000 (23:07 +0100)
committerBenjamin Braatz <bb@bbraatz.eu>
Tue, 21 Feb 2023 22:07:11 +0000 (23:07 +0100)
device_tree/neuron-spi-new-overlay.dts
modules/rtc-unipi/rtc-unipi.c
modules/unipi/src/unipi_iio.c
modules/unipi/src/unipi_spi.c
modules/unipi/src/unipi_tty.c
modules/unipi/src/unipi_uart.c

index c229042aad966c02e3169b91d65c4053f2441802..cd69c2a668490d940c4b174d64c4e5a758144823 100644 (file)
           status = "okay";
                  pinctrl-0 = <&spi0_pins &spi0_cs_pins>;
                  cs-gpios = <&gpio 8 1>, <&gpio 7 1>, <&gpio 24 1>, <&gpio 25 1>;
-                 neuronspi0: neuronspi@0 {
+                 neuronspi1: neuronspi@1 {
                     compatible = "unipi,neuron";
                     reg = <1>;
                     #address-cells = <1>;
                     #size-cells = <0>;
                     spi-max-frequency = <12000000>;
-                    pinctrl-0 = <&neuron_0_irq_pin>;
+                    pinctrl-0 = <&neuron_1_irq_pin>;
                     pinctrl-names = "default";
                     interrupt-parent = <&gpio>;
                     interrupts = <27 0x1>;
                     neuron-probe-always-succeeds = <0>;
                         neuron-always-create-tty = <0>;
                  };
-                 neuronspi1: neuronspi@1 {
+                 neuronspi2: neuronspi@2 {
                     compatible = "unipi,neuron";
                     reg = <2>;
                     #address-cells = <1>;
                     #size-cells = <0>;
                     spi-max-frequency = <1200000>;
-                    pinctrl-0 = <&neuron_1_irq_pin>;
+                    pinctrl-0 = <&neuron_2_irq_pin>;
                     pinctrl-names = "default";
                     interrupt-parent = <&gpio>;
                     interrupts = <23 0x1>;
                     neuron-probe-always-succeeds = <0>;
                         neuron-always-create-tty = <0>;
                  };
-                 neuronspi2: neuronspi@2 {
+                 neuronspi3: neuronspi@3 {
                     compatible = "unipi,neuron";
                     reg = <3>;
                     #address-cells = <1>;
                     #size-cells = <0>;
                     spi-max-frequency = <1200000>;
                     pinctrl-names = "default";
-                    pinctrl-0 = <&neuron_2_irq_pin>;
+                    pinctrl-0 = <&neuron_3_irq_pin>;
                     interrupt-parent = <&gpio>;
                     interrupts = <22 0x1>;
                     status = "okay";
                                brcm,function = <1>;
                                brcm,pull = <0>;
                        };
-                       neuron_0_irq_pin: neuron_0_irq_pin {
+                       neuron_1_irq_pin: neuron_1_irq_pin {
                                brcm,pins = <27>;
                                brcm,function = <0>;
                                brcm,pull = <1>;
                        };
-                       neuron_1_irq_pin: neuron_1_irq_pin {
+                       neuron_2_irq_pin: neuron_2_irq_pin {
                                brcm,pins = <23>;
                                brcm,function = <0>;
                                brcm,pull = <1>;
                        };
-                       neuron_2_irq_pin: neuron_2_irq_pin {
+                       neuron_3_irq_pin: neuron_3_irq_pin {
                                brcm,pins = <22>;
                                brcm,function = <0>;
                                brcm,pull = <1>;
                cs1_pin = <&frag0>,"cs-gpios:16", <&spi0_cs_pins>,"brcm,pins:4";
                cs2_pin = <&frag0>,"cs-gpios:40", <&spi0_cs_pins>,"brcm,pins:12";
                cs3_pin = <&frag0>,"cs-gpios:28", <&spi0_cs_pins>,"brcm,pins:8";        
-               neuron_irq_0 = <&neuronspi0>,"interrupts:0", <&neuron_0_irq_pin>,"brcm,pins:0";
                neuron_irq_1 = <&neuronspi1>,"interrupts:0", <&neuron_1_irq_pin>,"brcm,pins:0";
                neuron_irq_2 = <&neuronspi2>,"interrupts:0", <&neuron_2_irq_pin>,"brcm,pins:0";
+               neuron_irq_3 = <&neuronspi3>,"interrupts:0", <&neuron_3_irq_pin>,"brcm,pins:0";
     };
 };
 
index 7446b21d1ace0edbdc6d7139c63c55229f4f89c8..07f3184573e2c810b48e166ce846af0275e794cc 100644 (file)
@@ -641,8 +641,6 @@ read_rtc:
        if (rtc_unipi_can_wakeup_device && !want_irq) {
                dev_info(rtc_unipi->dev,
                         "'wakeup-source' is set, request for an IRQ is disabled!\n");
-               /* We cannot support UIE mode if we do not have an IRQ line */
-               rtc_unipi->rtc->uie_unsupported = 1;
        }
 
        if (want_irq) {
index 1eb28207f35118f7e6c289f2bfc52db549740347..4ca8fb43d6aa3ebd67e005ac64fbf8358948a39c 100644 (file)
@@ -465,7 +465,6 @@ struct iio_dev* neuronspi_stm_ai_probe(int io_count, int neuron_index, struct pl
        ((struct neuronspi_analog_data*)iio_priv(iio_driver))->parent = spi;
        ((struct neuronspi_analog_data*)iio_priv(iio_driver))->index = 0;
        iio_driver->modes = INDIO_DIRECT_MODE;
-       iio_driver->currentmode = INDIO_DIRECT_MODE;
        iio_driver->name = "ai_type_a";
        iio_driver->dev.parent = &(board_device->dev);
        dev_set_name(&iio_driver->dev, "ai_%d_1", neuron_index + 1);
@@ -485,7 +484,6 @@ struct iio_dev* neuronspi_stm_ao_probe(int io_count, int neuron_index, struct pl
        ((struct neuronspi_analog_data*)iio_priv(iio_driver))->parent = spi;
        ((struct neuronspi_analog_data*)iio_priv(iio_driver))->index = 0;
        iio_driver->modes = INDIO_DIRECT_MODE;
-       iio_driver->currentmode = INDIO_DIRECT_MODE;
        iio_driver->name = "ao_type_a";
        iio_driver->dev.parent = &(board_device->dev);
        dev_set_name(&iio_driver->dev, "ao_%d_1", neuron_index + 1);
@@ -508,7 +506,6 @@ struct iio_dev** neuronspi_sec_ai_probe(int io_count, int neuron_index, struct p
         ((struct neuronspi_analog_data*)iio_priv(iio_driver_arr[i]))->parent = spi;
                ((struct neuronspi_analog_data*)iio_priv(iio_driver_arr[i]))->index = i;
                iio_driver_arr[i]->modes = INDIO_DIRECT_MODE;
-        iio_driver_arr[i]->currentmode = INDIO_DIRECT_MODE;
                iio_driver_arr[i]->name = "ai_type_b";
                iio_driver_arr[i]->dev.parent = &(board_device->dev);
                dev_set_name(&iio_driver_arr[i]->dev, "ai_%d_%d", neuron_index + 1,  i + 1);
@@ -531,7 +528,6 @@ struct iio_dev** neuronspi_sec_ao_probe(int io_count, int neuron_index, struct p
         ((struct neuronspi_analog_data*)iio_priv(iio_driver_arr[i]))->parent = spi;
                ((struct neuronspi_analog_data*)iio_priv(iio_driver_arr[i]))->index = i;
                iio_driver_arr[i]->modes = INDIO_DIRECT_MODE;
-        iio_driver_arr[i]->currentmode = INDIO_DIRECT_MODE;
                iio_driver_arr[i]->name = "ao_type_b";
                iio_driver_arr[i]->dev.parent = &(board_device->dev);
                dev_set_name(&iio_driver_arr[i]->dev, "ao_%d_%d", neuron_index + 1,  i + 1);
index 5a5088539c2f7d332508d5d05c47ef6d48cbf964..e866564676bc4363b90aa4330eb87153f8d014c9 100644 (file)
@@ -1442,7 +1442,7 @@ s32 neuronspi_spi_probe(struct spi_device *spi)
        return ret;
 }
 
-s32 neuronspi_spi_remove(struct spi_device *spi)
+void neuronspi_spi_remove(struct spi_device *spi)
 {
     int neuron_index;
        struct neuronspi_driver_data *n_spi = spi_get_drvdata(spi);
@@ -1481,7 +1481,6 @@ s32 neuronspi_spi_remove(struct spi_device *spi)
                kfree(n_spi);
         printk(KERN_INFO "UNIPISPI: UniPi Board nspi%d removed\n", neuron_index);
        }
-       return 0;
 }
 
 
index d8a9db6620338e8c3a8702e049193099bc1868b6..a3a47c02e8ccf75e1ea84ef2a17843711bc6ed9e 100644 (file)
@@ -1032,7 +1032,7 @@ static void (*alias_n_tty_receive_buf)(struct tty_struct *tty, const unsigned ch
                              const char *fp, int count);
 static int (*alias_n_tty_receive_buf2)(struct tty_struct *tty, const unsigned char *cp,
                              const char *fp, int count);
-static int (*alias_n_tty_ioctl)(struct tty_struct *tty, struct file *file,
+static int (*alias_n_tty_ioctl)(struct tty_struct *tty,
                unsigned int cmd, unsigned long arg);
 
 static void unipi_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
@@ -1065,7 +1065,7 @@ static int unipi_tty_receive_buf2(struct tty_struct *tty, const unsigned char *c
     return ret;
 }
 
-static int unipi_tty_ioctl(struct tty_struct *tty, struct file *file,
+static int unipi_tty_ioctl(struct tty_struct *tty,
                       unsigned int cmd, unsigned long arg)
 {
        int retval;
@@ -1080,7 +1080,7 @@ static int unipi_tty_ioctl(struct tty_struct *tty, struct file *file,
                                return retval;
                }
        }
-       return  alias_n_tty_ioctl(tty, file, cmd, arg);
+       return  alias_n_tty_ioctl(tty, cmd, arg);
 }
 
 int __init unipi_tty_init(void)
index 57944dd22a414467134a75a3c773ff3bf3de897b..269a499327dfc07b62c5ad09276d33a1446804f1 100644 (file)
@@ -220,7 +220,7 @@ int neuronspi_uart_ioctl (struct uart_port *port, unsigned int ioctl_code, unsig
 }
 
 
-void neuronspi_uart_set_termios(struct uart_port *port, struct ktermios *termios, struct ktermios *old)
+void neuronspi_uart_set_termios(struct uart_port *port, struct ktermios *termios, const struct ktermios *old)
 {
        struct neuronspi_port *n_port;
        n_port = to_neuronspi_port(port, port);
@@ -255,7 +255,7 @@ void neuronspi_uart_set_termios(struct uart_port *port, struct ktermios *termios
     neuronspi_uart_update_timeout(n_port, termios->c_cflag, n_port->baud);
 }
 
-s32 neuronspi_uart_config_rs485(struct uart_port *port, struct serial_rs485 *rs485)
+s32 neuronspi_uart_config_rs485(struct uart_port *port, struct ktermios *termios, struct serial_rs485 *rs485)
 {
        port->rs485 = *rs485;
        return 0;
@@ -656,6 +656,11 @@ int neuronspi_uart_probe(struct spi_device* spi, struct neuronspi_driver_data *n
     struct neuronspi_port* port;
     int i, ret = 0;
     
+    if (neuronspi_uart_data_global->p == NULL) {
+        neuronspi_uart_data_global->p = kzalloc(sizeof(struct neuronspi_port[NEURONSPI_MAX_UART]), GFP_ATOMIC);
+        unipi_uart_trace("Allocated port structure for %d ttyNS devices", NEURONSPI_MAX_UART);
+    }
+    
     if (n_spi->uart_count_to_probe) {
         n_spi->uart_pindex = neuronspi_uart_data_global->p_count;
         for (i=0; i<n_spi->uart_count_to_probe; i++) {