Changes to get compiled on Arch Linux ARM
authorBenjamin Braatz <benjamin.braatz@graph-it.com>
Wed, 27 Jul 2022 09:35:16 +0000 (11:35 +0200)
committerBenjamin Braatz <benjamin.braatz@graph-it.com>
Wed, 27 Jul 2022 09:35:16 +0000 (11:35 +0200)
device_tree/neuron-spi-new-overlay.dts
modules/rtc-unipi/rtc-unipi.c
modules/unipi/src/unipi_spi.c
modules/unipi/src/unipi_tty.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 255bcd181824288089408c551bd211de002b6b66..7446b21d1ace0edbdc6d7139c63c55229f4f89c8 100644 (file)
@@ -673,12 +673,11 @@ read_rtc:
                rtc_unipi->rtc->nvram_old_abi = true;
 #else
                nvmem_cfg.priv = rtc_unipi;
-           rtc_unipi->rtc->nvram_old_abi = true;
-           rtc_nvmem_register(rtc_unipi->rtc, &nvmem_cfg);
+           devm_nvmem_register(rtc_unipi->rtc->dev.parent, &nvmem_cfg);
 
 #endif
        rtc_unipi->rtc->ops = &mcp794xx_rtc_ops; /*chip->rtc_ops ?: &ds13xx_rtc_ops;*/
-       err = rtc_register_device(rtc_unipi->rtc);
+       err = devm_rtc_register_device(rtc_unipi->rtc);
        if (err)
                return err;
 
index a65ace3a33f330a9b698dea725481ca01df0bd07..5a5088539c2f7d332508d5d05c47ef6d48cbf964 100644 (file)
@@ -329,7 +329,8 @@ struct unipi_spi_context* unipi_spi_setup_context(struct spi_device* spi_dev, st
     s_trans = (struct spi_transfer *)(context + 1);
     spi_message_init_with_transfers(&context->message, s_trans, trans_count);
 
-       s_trans[0].delay_usecs = NEURONSPI_EDGE_DELAY;
+       s_trans[0].delay.value = NEURONSPI_EDGE_DELAY;
+       s_trans[0].delay.unit = SPI_DELAY_UNIT_USECS;
        s_trans[0].bits_per_word = 8;
        s_trans[0].speed_hz = freq;
 
@@ -341,7 +342,8 @@ struct unipi_spi_context* unipi_spi_setup_context(struct spi_device* spi_dev, st
             packet_crc = neuronspi_spi_crc(send_buf->first_message, 4, 0);
             *((u16*)(send_buf->first_message+4)) = packet_crc;
         }
-        s_trans[1].delay_usecs = delay;
+        s_trans[1].delay.value = delay;
+        s_trans[1].delay.unit = SPI_DELAY_UNIT_USECS;
         s_trans[1].len = NEURONSPI_FIRST_MESSAGE_LENGTH;
         s_trans[1].tx_buf = send_buf->first_message;
         s_trans[1].rx_buf = recv_buf->first_message;
@@ -355,7 +357,8 @@ struct unipi_spi_context* unipi_spi_setup_context(struct spi_device* spi_dev, st
                unipi_spi_trace_1(KERN_INFO "UNIPISPI: SPI Master Write(%3d) %32ph\n", len, send_buf->second_message);
                remain = len;
                for (i = 2; i < trans_count; i++) {
-                       s_trans[i].delay_usecs = 0;
+                       s_trans[i].delay.value = 0;
+                       s_trans[i].delay.unit = SPI_DELAY_UNIT_USECS;
                        s_trans[i].bits_per_word = 8;
                        s_trans[i].speed_hz = freq;
                        s_trans[i].tx_buf = send_buf->second_message + (NEURONSPI_MAX_TX * (i - 2));
@@ -1228,10 +1231,6 @@ s32 neuronspi_spi_probe(struct spi_device *spi)
        u32 always_create_uart = 0;
     struct kthread_worker   *worker;
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
-    struct spi_delay inactive_delay;
-#endif
-
        unsigned long flags;
 
        n_spi = kzalloc(sizeof *n_spi, GFP_ATOMIC);
@@ -1358,10 +1357,6 @@ s32 neuronspi_spi_probe(struct spi_device *spi)
     if (gpio_is_valid(spi->cs_gpio)) {
         spi->cs_gpio = -spi->cs_gpio;
     }
-#else
-    inactive_delay.value = 40;
-    inactive_delay.unit = SPI_DELAY_UNIT_USECS;
-       spi_set_cs_timing(spi, NULL, NULL, &inactive_delay);
 #endif
 
     // Prepare worker for interrupt, LEDs, UARTs
index 76c01849ef50b8a875429067354be48367e397a9..d8a9db6620338e8c3a8702e049193099bc1868b6 100644 (file)
@@ -985,7 +985,7 @@ static long unipi_tty_compat_ioctl(struct tty_struct *tty, struct file *file,
 #endif
 
 static struct tty_ldisc_ops unipi_tty_ops = {
-       .magic           = TTY_LDISC_MAGIC,
+       .num             = N_PROFIBUS_FDL;
        .owner                   = THIS_MODULE,
        .name            = "unipi_tty",
        .open            = unipi_tty_open,
@@ -1012,7 +1012,7 @@ int __init unipi_tty_init(void)
 {
        int err;
        unipi_tty_trace(KERN_INFO "UNIPISPI: TTY Init\n");
-       err = tty_register_ldisc(N_PROFIBUS_FDL, &unipi_tty_ops);
+       err = tty_register_ldisc(&unipi_tty_ops);
        if (err) {
                printk(KERN_INFO "UNIPISPI: UniPi line discipline registration failed. (%d)", err);
                return err;
@@ -1022,21 +1022,21 @@ int __init unipi_tty_init(void)
 
 void __exit unipi_tty_exit(void)
 {
-     tty_unregister_ldisc(N_PROFIBUS_FDL);
+     tty_unregister_ldisc(&unipi_tty_ops);
 }
 
 #else
 
 struct tty_ldisc_ops unipi_tty_ldisc;
 static void (*alias_n_tty_receive_buf)(struct tty_struct *tty, const unsigned char *cp,
-                             char *fp, int count);
+                             const char *fp, int count);
 static int (*alias_n_tty_receive_buf2)(struct tty_struct *tty, const unsigned char *cp,
-                             char *fp, int count);
+                             const char *fp, int count);
 static int (*alias_n_tty_ioctl)(struct tty_struct *tty, struct file *file,
                unsigned int cmd, unsigned long arg);
 
 static void unipi_tty_receive_buf(struct tty_struct *tty, const unsigned char *cp,
-                             char *fp, int count)
+                             const char *fp, int count)
 {
     int is_parmrk = I_PARMRK(tty);
     if (is_parmrk) {
@@ -1050,7 +1050,7 @@ static void unipi_tty_receive_buf(struct tty_struct *tty, const unsigned char *c
 }
 
 static int unipi_tty_receive_buf2(struct tty_struct *tty, const unsigned char *cp,
-                             char *fp, int count)
+                             const char *fp, int count)
 {
     int ret;
     int is_parmrk = I_PARMRK(tty);
@@ -1090,7 +1090,7 @@ int __init unipi_tty_init(void)
 
     memset(&unipi_tty_ldisc, 0, sizeof(unipi_tty_ldisc));
     n_tty_inherit_ops(&unipi_tty_ldisc);
-    unipi_tty_ldisc.magic           = TTY_LDISC_MAGIC;
+    unipi_tty_ldisc.num             = N_PROFIBUS_FDL;
     unipi_tty_ldisc.name            = "unipi_tty";
     unipi_tty_ldisc.owner           = THIS_MODULE;
 
@@ -1102,7 +1102,7 @@ int __init unipi_tty_init(void)
        unipi_tty_ldisc.receive_buf2    = unipi_tty_receive_buf2;
        unipi_tty_ldisc.ioctl           = unipi_tty_ioctl;
 
-    err = tty_register_ldisc(N_PROFIBUS_FDL, &unipi_tty_ldisc);
+    err = tty_register_ldisc(&unipi_tty_ldisc);
     if (err) {
         printk(KERN_INFO "UniPi line discipline registration failed. (%d)", err);
         return err;
@@ -1112,6 +1112,6 @@ int __init unipi_tty_init(void)
 
 void __exit unipi_tty_exit(void)
 {
-     tty_unregister_ldisc(N_PROFIBUS_FDL);
+     tty_unregister_ldisc(&unipi_tty_ldisc);
 }
 #endif