1. 08 Apr, 2022 3 commits
    • Arnd Bergmann's avatar
      ARM: rework endianess selection · 5d6f5267
      Arnd Bergmann authored
      Choosing big-endian vs little-endian kernels in Kconfig has not worked
      correctly since the introduction of CONFIG_ARCH_MULTIPLATFORM a long
      time ago.
      
      The problems is that CONFIG_BIG_ENDIAN depends on
      ARCH_SUPPORTS_BIG_ENDIAN, which can set by any one platform
      in the config, but would actually have to be supported by all
      of them.
      
      This was mostly ok for ARMv6/ARMv7 builds, since these are BE8 and
      tend to just work aside from problems in nonportable device drivers.
      For ARMv4/v5 machines, CONFIG_BIG_ENDIAN and CONFIG_ARCH_MULTIPLATFORM
      were never set together, so this was disabled on all those machines
      except for IXP4xx.
      
      As IXP4xx can now become part of ARCH_MULTIPLATFORM, it seems better to
      formalize this logic: all ARMv4/v5 platforms get an explicit dependency
      on being either big-endian (ixp4xx) or little-endian (the rest). We may
      want to fix ixp4xx in the future to support both, but it does not work
      in LE mode at the moment.
      
      For the ARMv6/v7 platforms, there are two ways this could be handled
      
       a) allow both modes only for platforms selecting
          'ARCH_SUPPORTS_BIG_ENDIAN' today, but only LE mode for the
          others, given that these were added intentionally at some
          point.
      
       b) allow both modes everwhere, given that it was already possible
          to build that way by e.g. selecting ARCH_VIRT, and that the
          list is not an accurate reflection of which platforms may or
          may not work.
      
      Out of these, I picked b) because it seemed slighly more logical
      to me.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      5d6f5267
    • Arnd Bergmann's avatar
      ARM: iop32x: enable multiplatform support · a3102faf
      Arnd Bergmann authored
      After iop32x was converted to the generic multi-irq entry
      code, nothing really stops us from building it into a
      generic kernel.
      
      The two last headers can simply be removed, the mach/irqs.h
      gets replaced with the sparse-irq intiialization from the
      board specific .nr_irqs value, and the decompressor debug
      output can use the debug_ll hack that all other platforms
      use.
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      a3102faf
    • Arnd Bergmann's avatar
      ARM: s3c: enable s3c24xx multiplatform support · 8c1fb11b
      Arnd Bergmann authored
      With the custom ISA I/O and the missing sparse-irq support
      out of the way, s3c24xx can now be built into the same
      kernel as all other ARM9 based platforms.
      Acked-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      8c1fb11b
  2. 07 Apr, 2022 2 commits
    • Arnd Bergmann's avatar
      ARM: s3c24xx: convert to sparse-irq · c78a41fc
      Arnd Bergmann authored
      As a final bit of preparation for converting to ARCH_MULTIPLATFORM,
      change the interrupt handling for s3c24xx to use sparse IRQs.
      
      Since the number of possible interrupts is already fixed and relatively
      small per chip, just make it use all legacy interrupts preallocated
      using the .nr_irqs field in the machine descriptor, rather than actually
      allocating domains on the fly.
      Acked-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      c78a41fc
    • Arnd Bergmann's avatar
      ARM: s3c24xx: remove support for ISA drivers on BAST PC/104 · 91276c0f
      Arnd Bergmann authored
      BAST is the one machine that theoretically supports unmodified ISA
      drivers for hardware on its PC/104 connector, using a custom version of
      the inb()/outb() and inw()/outw() macros.
      
      This is incompatible with the generic version used in asm/io.h, and
      can't easily be used in a multiplatform kernel.
      
      Removing the special case for 16-bit I/O port access on BAST gets us
      closer to multiplatform, at the expense of any PC/104 users with 16-bit
      cards having to either use an older kernel or modify their ISA drivers
      to manually ioremap() the area and use readw()/write() in place of
      inw()/outw(). Either way is probably ok, given that there is a
      recurring discussion about dropping s3c24xx altogether, and many
      traditional ISA drivers are already gone.
      
      Machines other than BAST already have no support for ISA drivers, though a
      couple of them do map one of the external chip-selects into the ISA port
      range, using the same address for 8-bit and 16-bit I/O. It is unlikely
      that anything actually uses this mapping, but it's also easy to keep
      this working by mapping it to the normal platform-independent PCI I/O
      base that is otherwise unused on s3c24xx.
      
      The mach/map-base.h file is no longer referenced in global headers and
      can be moved into the platform directory.
      Acked-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      91276c0f
  3. 04 Apr, 2022 6 commits
  4. 03 Apr, 2022 8 commits
  5. 02 Apr, 2022 21 commits