100 Commits
Author SHA1 Message Date
Joel Stanley 72e7bcc2cd powerpc/32: Avoid unsupported flags with clang
When building for ppc32 with clang these flags are unsupported:

  -ffixed-r2 and -mmultiple

llvm's lib/Target/PowerPC/PPCRegisterInfo.cpp marks r2 as reserved on
when building for SVR4ABI and !ppc64:

  // The SVR4 ABI reserves r2 and r13
  if (Subtarget.isSVR4ABI()) {
    // We only reserve r2 if we need to use the TOC pointer. If we have no
    // explicit uses of the TOC pointer (meaning we're a leaf function with
    // no constant-pool loads, etc.) and we have no potential uses inside an
    // inline asm block, then we can treat r2 has an ordinary callee-saved
    // register.
    const PPCFunctionInfo *FuncInfo = MF.getInfo<PPCFunctionInfo>();
    if (!TM.isPPC64() || FuncInfo->usesTOCBasePtr() || MF.hasInlineAsm())
      markSuperRegs(Reserved, PPC::R2);  // System-reserved register
    markSuperRegs(Reserved, PPC::R13); // Small Data Area pointer register
  }

This means we can safely omit -ffixed-r2 when building for 32-bit
targets.

The -mmultiple/-mno-multiple flags are not supported by clang, so
platforms that might support multiple miss out on using multiple word
instructions.

We wrap these flags in cc-option so that when Clang gains support the
kernel will be able use these flags.

Clang 8 can then build a ppc44x_defconfig which boots in Qemu:

  make CC=clang-8 ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-  ppc44x_defconfig
  ./scripts/config -e CONFIG_DEVTMPFS -d DEVTMPFS_MOUNT
  make CC=clang-8 ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu-

  qemu-system-ppc -M bamboo \
   -kernel arch/powerpc/boot/zImage \
   -dtb arch/powerpc/boot/dts/bamboo.dtb \
   -initrd ~/ppc32-440-rootfs.cpio \
   -nographic -serial stdio -monitor pty -append "console=ttyS0"

Link: https://github.com/ClangBuiltLinux/linux/issues/261
Link: https://bugs.llvm.org/show_bug.cgi?id=39556
Link: https://bugs.llvm.org/show_bug.cgi?id=39555
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-12-20 20:53:11 +11:00
Joel Stanley e213574a44 raid6/ppc: Fix build for clang
We cannot build these files with clang as it does not allow altivec
instructions in assembly when -msoft-float is passed.

Jinsong Ji <[email protected]> wrote:
> We currently disable Altivec/VSX support when enabling soft-float.  So
> any usage of vector builtins will break.
>
> Enable Altivec/VSX with soft-float may need quite some clean up work, so
> I guess this is currently a limitation.
>
> Removing -msoft-float will make it work (and we are lucky that no
> floating point instructions will be generated as well).

This is a workaround until the issue is resolved in clang.

Link: https://bugs.llvm.org/show_bug.cgi?id=31177
Link: https://github.com/ClangBuiltLinux/linux/issues/239
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-12-20 20:53:11 +11:00
Joel Stanley b682c86924 powerpc/math-emu: Update macros from GCC
The add_ssaaaa, sub_ddmmss, umul_ppmm and udiv_qrnnd macros originate
from GCC's longlong.h which in turn was copied from GMP's longlong.h a
few decades ago.

This was found when compiling with clang:

   arch/powerpc/math-emu/fnmsub.c:46:2: error: invalid use of a cast in a
   inline asm context requiring an l-value: remove the cast or build with
   -fheinous-gnu-extensions
           FP_ADD_D(R, T, B);
           ^~~~~~~~~~~~~~~~~
   ...

   ./arch/powerpc/include/asm/sfp-machine.h:283:27: note: expanded from
   macro 'sub_ddmmss'
                  : "=r" ((USItype)(sh)),                                  \
                          ~~~~~~~~~~^~~

Segher points out: this was fixed in GCC over 16 years ago
( https://gcc.gnu.org/r56600 ), and in GMP (where it comes from)
presumably before that.

Update the add_ssaaaa, sub_ddmmss, umul_ppmm and udiv_qrnnd macros to
the latest GCC version in order to git rid of the invalid casts. These
were taken as-is from GCC's longlong in order to make future syncs
obvious. Other parts of sfp-machine.h were left as-is as the file
contains more features than present in longlong.h.

Link: https://github.com/ClangBuiltLinux/linux/issues/260
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Reviewed-by: Segher Boessenkool <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-12-04 19:45:01 +11:00
Joel Stanley 89b32a47e3 ARM: dts: aspeed: Enable VHUB on Romulus
The Romulus USB bus is connected to the Power9's PCIe USB controller.

Signed-off-by: Joel Stanley <[email protected]>
2018-12-03 09:14:03 +10:30
Joel Stanley 39cc9f037c ARM: dts: aspeed-palmetto: Add LPC control node
This adds the required LPC node with phandles to the reserved memory
region and the mtd device.

Signed-off-by: Joel Stanley <[email protected]>
2018-12-03 09:13:56 +10:30
Joel Stanley 813af51f5d powerpc/boot: Set target when cross-compiling for clang
Clang needs to be told which target it is building for when cross
compiling.

Link: https://github.com/ClangBuiltLinux/linux/issues/259
Signed-off-by: Joel Stanley <[email protected]>
Tested-by: Daniel Axtens <[email protected]> # powerpc 64-bit BE
Acked-by: Michael Ellerman <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
2018-11-14 08:21:23 +09:00
Joel Stanley 3bd9805090 Makefile: Export clang toolchain variables
The powerpc makefile will use these in it's boot wrapper.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
2018-11-14 08:21:22 +09:00
Joel Stanley 98415da03a selftests/powerpc/pmu: Link ebb tests with -no-pie
When running the ebb tests after building on a ppc64le Ubuntu machine:

 $ pmu/ebb/reg_access_test: error while loading shared libraries:
 R_PPC64_ADDR16_HI reloc at 0x000000013a965130 for symbol `' out of
 range

This is because the Ubuntu toolchain builds has PIE enabled by default.
Change it to be always off instead.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-31 23:56:21 +11:00
Joel Stanley 27825349d7 selftests/powerpc/signal: Fix out-of-tree build
We should use TEST_GEN_PROGS, not TEST_PROGS. That tells the selftests
makefile (lib.mk) that those tests are generated (built), and so it
adds the $(OUTPUT) prefix for us, making the out-of-tree build work
correctly.

It also means we don't need our own clean rule, lib.mk does it.

We also have to update the signal_tm rule to use $(OUTPUT).

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-31 23:56:20 +11:00
Joel Stanley c39b79082a selftests/powerpc/ptrace: Fix out-of-tree build
We should use TEST_GEN_PROGS, not TEST_PROGS. That tells the selftests
makefile (lib.mk) that those tests are generated (built), and so it
adds the $(OUTPUT) prefix for us, making the out-of-tree build work
correctly.

It also means we don't need our own clean rule, lib.mk does it.

We also have to update the ptrace-pkey and core-pkey rules to use
$(OUTPUT).

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-31 23:56:19 +11:00
Joel Stanley 9c87156cce powerpc/xmon: Relax frame size for clang
When building with clang (8 trunk, 7.0 release) the frame size limit is
hit:

 arch/powerpc/xmon/xmon.c:452:12: warning: stack frame size of 2576
 bytes in function 'xmon_core' [-Wframe-larger-than=]

Some investigation by Naveen indicates this is due to clang saving the
addresses to printf format strings on the stack.

While this issue is investigated, bump up the frame size limit for xmon
when building with clang.

Link: https://github.com/ClangBuiltLinux/linux/issues/252
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-31 20:39:25 +11:00
Joel Stanley a0aebae07f selftests: powerpc: Fix warning for security subdir
typing 'make' inside tools/testing/selftests/powerpc gave a build
warning:

BUILD_TARGET=tools/testing/selftests/powerpc/security; mkdir -p $BUILD_TARGET; make OUTPUT=$BUILD_TARGET -k -C security all
make[1]: Entering directory 'tools/testing/selftests/powerpc/security'
../../lib.mk:20: ../../../../scripts/subarch.include: No such file or directory
make[1]: *** No rule to make target '../../../../scripts/subarch.include'.
make[1]: Failed to remake makefile '../../../../scripts/subarch.include'.

The build is one level deeper than lib.mk thinks it is. Set top_srcdir
to set things straight.

Note that the test program is still built.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-31 14:36:33 +11:00
Joel Stanley ed9e84a4d7 powerpc: Use SWITCH_FRAME_SIZE for prom and rtas entry
Commit 6c1719942e ("powerpc/of: Remove useless register save/restore
when calling OF back") removed the saving of srr0 and srr1 when calling
into OpenFirmware. Commit e31aa453bb ("powerpc: Use LOAD_REG_IMMEDIATE
only for constants on 64-bit") did the same for rtas.

This means we don't need to save the extra stack space and can use
the common SWITCH_FRAME_SIZE.

There were already no users of _SRR0 and _SRR1 so we can remove them
too.

Link: https://github.com/linuxppc/linux/issues/83
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 960e300298 powerpc/Makefile: Fix PPC_BOOK3S_64 ASFLAGS
Ever since commit 15a3204d24 ("powerpc/64s: Set assembler machine type
to POWER4") we force -mpower4 to be passed to the assembler
irrespective of the CFLAGS used (for Book3s 64).

When building a powerpc64 kernel with clang, clang will not add -many
to the assembler flags, so any instructions that the compiler has
generated that are not available on power4 will cause an error:

  /usr/bin/as -a64 -mppc64 -mlittle-endian -mpower8 \
   -I ./arch/powerpc/include -I ./arch/powerpc/include/generated \
   -I ./include -I ./arch/powerpc/include/uapi \
   -I ./arch/powerpc/include/generated/uapi -I ./include/uapi \
   -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc \
   -maltivec -mpower4 -o init/do_mounts.o /tmp/do_mounts-3b0a3d.s
  /tmp/do_mounts-51ce54.s:748: Error: unrecognized opcode: `isel'

GCC does include -many, so the GCC driven gas call will succeed:

  as -v -I ./arch/powerpc/include -I ./arch/powerpc/include/generated -I
  ./include -I ./arch/powerpc/include/uapi
  -I ./arch/powerpc/include/generated/uapi -I ./include/uapi
  -I ./include/generated/uapi -I arch/powerpc -I arch/powerpc
   -a64 -mpower8 -many -mlittle -maltivec -mpower4 -o init/do_mounts.o

Note that isel is power7 and above for IBM CPUs. GCC only generates it
for Power9 and above, but the above test was run against the clang
generated assembly.

Peter Bergner explains:

  When using -many -mpower4, gas will first try and find a matching
  power4 mnemonic and failing that, it will then allow any valid
  mnemonic that gas knows about. GCC's use of -many predates me
  though.

  IIRC, Alan looked at trying to remove it, but I forget why he
  didn't. Could be either a gcc or gas issue at the time. I'm not sure
  whether issue still exists or not. He and I have modified how gas
  works internally a fair amount since he tried removing gcc use of
  -many.

  I will also note that when using -many, gas will choose the first
  mnemonic that matches in the mnemonic table and we have (mostly)
  sorted the table so that server mnemonics show up earlier in the
  table than other mnemonics, so they'll be seen/chosen first.

By explicitly setting -many we can build with Clang and GCC while
retaining the -mpower4 option.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 747b217608 powerpc/boot: Build boot wrapper with optimisations
The boot wrapper is currently built with -Os. By building with O2 we
can meaningfully reduce the time decompressing the kernel.

I tested by comparing 10 runs of each option in Qemu and on hardware.
The kernel is compressed with KERNEL_XZ built with GCC 8.2.0-7ubuntu1.
The values are counts of the timebase.

Qemu TCG powernv Power8:

              Os            O2            O3
 median       10221123889   6201518438    6568186825
 stddev        1361267211    429090641     657930076
 improvement                    39.33%        35.74%

Palmetto Power8:

              Os            O2            O3
 median           50279         50599          35790
 stddev       992144533     627130655      623721078
 improvement                   36.79%         37.13%

Romulus Power9:

              Os            O2            O3
 median       670312391     454733720      448881398
 stddev          157569        107276         108760
 improvement                   32.16%         33.03%

TCG was quite noisy, with every few runs producing an outlier. Even so,
O2 is faster than O3. On hardware the numbers were less noisy and O3 is
slightly faster than O2.

The wrapper size increases when moving from Os. Comparing zImage.epapr
to the existing Os build using bloat-o-meter:

  Before=43401, After=56837 (13KB), chg +30.96%
  Before=43401, After=64305 (20KB), chg +48.16%

I chose O2 for a balance between Qemu and hardware speed up.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley e8e132e688 powerpc/boot: Disable vector instructions
This will avoid auto-vectorisation when building with higher
optimisation levels.

We don't know if the machine can support VSX and even if it's present
it's probably not going to be enabled at this point in boot.

These flag were both added prior to GCC 4.6 which is the minimum
compiler version supported by upstream, thanks to Segher for the
details.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 1a855eaccf powerpc/boot: Fix opal console in boot wrapper
As of commit 10c77dba40 ("powerpc/boot: Fix build failure in 32-bit
boot wrapper") the opal code is hidden behind CONFIG_PPC64_BOOT_WRAPPER,
but the boot wrapper avoids include/linux, so it does not get the normal
Kconfig flags.

We can drop the guard entirely as in commit f8e8e69cea ("powerpc/boot:
Only build OPAL code when necessary") the makefile only includes opal.c
in the build if CONFIG_PPC64_BOOT_WRAPPER is set.

Fixes: 10c77dba40 ("powerpc/boot: Fix build failure in 32-bit boot wrapper")
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 5e9dcb6188 powerpc/boot: Expose Kconfig symbols to wrapper
Currently the wrapper is built without including anything in
$(src)/include/, which means there are no CONFIG_ symbols defined.
This means the platform specific serial drivers were never enabled.

We now copy the definitions into the boot directory, so any C file can
now include autoconf.h to depend on configuration options.

Fixes: 866bfc75f4 ("powerpc: conditionally compile platform-specific serial drivers")
Signed-off-by: Joel Stanley <[email protected]>
[mpe: Fix to use $(objtree) to find autoconf.h]
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley aea447141c powerpc: Disable -Wbuiltin-requires-header when setjmp is used
The powerpc kernel uses setjmp which causes a warning when building
with clang:

  In file included from arch/powerpc/xmon/xmon.c:51:
  ./arch/powerpc/include/asm/setjmp.h:15:13: error: declaration of
  built-in function 'setjmp' requires inclusion of the header <setjmp.h>
        [-Werror,-Wbuiltin-requires-header]
  extern long setjmp(long *);
              ^
  ./arch/powerpc/include/asm/setjmp.h:16:13: error: declaration of
  built-in function 'longjmp' requires inclusion of the header <setjmp.h>
        [-Werror,-Wbuiltin-requires-header]
  extern void longjmp(long *, long);
              ^

This *is* the header and we're not using the built-in setjump but
rather the one in arch/powerpc/kernel/misc.S. As the compiler warning
does not make sense, it for the files where setjmp is used.

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
[mpe: Move subdir-ccflags in xmon/Makefile to not clobber -Werror]
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 6233b6da0c powerpc/perf: Quiet IMC PMU registration message
On a Power9 box we get a few screens full of these on boot. Drop
them to pr_debug.

  [    5.993645] nest_centaur6_imc performance monitor hardware support registered
  [    5.993728] nest_centaur7_imc performance monitor hardware support registered
  [    5.996510] core_imc performance monitor hardware support registered
  [    5.996569] nest_mba0_imc performance monitor hardware support registered
  [    5.996631] nest_mba1_imc performance monitor hardware support registered
  [    5.996685] nest_mba2_imc performance monitor hardware support registered

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Madhavan Srinivasan <[email protected]>
Reviewed-by: Stewart Smith <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-13 22:21:25 +11:00
Joel Stanley 242cdad873 lib/xz: Put CRC32_POLY_LE in xz_private.h
This fixes a regression introduced by faa16bc404 ("lib: Use
existing define with polynomial").

The cleanup added a dependency on include/linux, which broke the PowerPC
boot wrapper/decompresser when KERNEL_XZ is enabled:

  BOOTCC  arch/powerpc/boot/decompress.o
 In file included from arch/powerpc/boot/../../../lib/decompress_unxz.c:233,
                 from arch/powerpc/boot/decompress.c:42:
 arch/powerpc/boot/../../../lib/xz/xz_crc32.c:18:10: fatal error:
 linux/crc32poly.h: No such file or directory
  #include <linux/crc32poly.h>
           ^~~~~~~~~~~~~~~~~~~

The powerpc decompresser is a hairy corner of the kernel. Even while building
a 64-bit kernel it needs to build a 32-bit binary and therefore avoid including
files from include/linux.

This allows users of the xz library to avoid including headers from
'include/linux/' while still achieving the cleanup of the magic number.

Fixes: faa16bc404 ("lib: Use existing define with polynomial")
Reported-by: Meelis Roos <[email protected]>
Reported-by: kbuild test robot <[email protected]>
Suggested-by: Christophe LEROY <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Tested-by: Meelis Roos <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-10-02 08:44:59 +10:00
Joel Stanley 5a4630aadb ftrace: Build with CPPFLAGS to get -Qunused-arguments
When building to record the mcount locations the kernel uses
KBUILD_CFLAGS but not KBUILD_CPPFLAGS. This means it lacks
-Qunused-arguments when building with clang, resulting in a lot of
noisy warnings.

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Signed-off-by: Masahiro Yamada <[email protected]>
2018-09-19 23:53:54 +09:00
Joel Stanley ee9d21b3b3 powerpc/boot: Ensure _zimage_start is a weak symbol
When building with clang crt0's _zimage_start is not marked weak, which
breaks the build when linking the kernel image:

 $ objdump -t arch/powerpc/boot/crt0.o |grep _zimage_start$
 0000000000000058 g       .text  0000000000000000 _zimage_start

 ld: arch/powerpc/boot/wrapper.a(crt0.o): in function '_zimage_start':
 (.text+0x58): multiple definition of '_zimage_start';
 arch/powerpc/boot/pseries-head.o:(.text+0x0): first defined here

Clang requires the .weak directive to appear after the symbol is
declared. The binutils manual says:

 This directive sets the weak attribute on the comma separated list of
 symbol names. If the symbols do not already exist, they will be
 created.

So it appears this is different with clang. The only reference I could
see for this was an OpenBSD mailing list post[1].

Changing it to be after the declaration fixes building with Clang, and
still works with GCC.

 $ objdump -t arch/powerpc/boot/crt0.o |grep _zimage_start$
 0000000000000058  w      .text	0000000000000000 _zimage_start

Reported to clang as https://bugs.llvm.org/show_bug.cgi?id=38921

[1] https://groups.google.com/forum/#!topic/fa.openbsd.tech/PAgKKen2YCY

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Nick Desaulniers <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-09-19 22:08:12 +10:00
Joel Stanley cbc39809a3 powerpc/configs: Update skiroot defconfig
Disable new features from recent releases, and clean out some other
unused options:

  - Enable EXPERT, so we can disable some things
  - Disable non-powerpc BPF decoders
  - Disable TASKSTATS
  - Disable unused syscalls
  - Set more things to be modules
  - Turn off unused network vendors
  - PPC_OF_BOOT_TRAMPOLINE and FB_OF are unused on powernv
  - Drop unused Radeon and Matrox GPU drivers
  - IPV6 support landed in petitboot
  - Bringup related command line powersave=off dropped, switch to quiet

Set CONFIG_I2C_CHARDEV=y as the module is not loaded automatically, and
without this i2cget etc. will fail in the skiroot environment.

This defconfig gets us build coverage of KERNEL_XZ, which was broken in
the 4.19 merge window for powerpc.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-09-19 22:08:12 +10:00
Joel Stanley b0dc0f8618 powerpc/powernv: Don't select the cpufreq governors
Deciding wich govenors should be built into the kernel can be left to
users to configure.

Fixes: 81f359027a ("cpufreq: powernv: Select CPUFreq related Kconfig options for powernv")
Signed-off-by: Joel Stanley <[email protected]>
[mpe: Update powernv/ppc64 defconfigs to enable them by default]
Signed-off-by: Michael Ellerman <[email protected]>
2018-09-17 21:16:26 +10:00
Joel Stanley 90708adcd3 ARM: config: aspeed: Enable new FSI drivers
This turns on the FSI-attached I2C bus driver, and the ColdFire
offloaded FSI master which are new to 4.19.

Signed-off-by: Joel Stanley <[email protected]>
2018-07-26 13:27:27 +09:30
Joel Stanley b0ddc9106c ARM: config: multi_v5: Enable ASPEED drivers
This enables the devices used in the AST2400 family of BMC SoCs:

 - VUART
 - SPI NOR
 - LPC controller
 - LPC snoop (port 80)
 - Ethernet
 - GPIO
 - ADC
 - I2C
 - Random number generator
 - IPMI KCS
 - IPMI BT
 - Fan/Tach

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-07-25 16:35:47 +09:30
Joel Stanley fc2a325bbc ARM: config: multi_v5: Refresh configuration
This is the result of a make mutli_v5_defconfig && make savedefconfig.

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-07-25 16:35:42 +09:30
Joel Stanley 20c90af9ea ARM: config: aspeed: Update defconfig
- Enable new support:
     hardware random number generator
     FSI and client drivers
     DRM GFX driver

 - Disable unwanted features:
     ARM_APPENDED_DTB
     ARM_ATAG_DTB_COMPAT
     BLK_DEV_RAM

 - Sync G4 and G5 with OpenBMC configurations
     BLK_DEV_LOOP, for updater mechanic
     CRYPTO_HMAC, for libsdbus features
     CRYPTO_SHA256
     CRYPTO_USER_API_HASH

 - Enable security related features:
     SLAB_FREELIST_RANDOM
     STRICT_KERNEL_RW
     CC_STACKPROTECTOR_STRONG
     HARDENED_USERCOPY
     FORTIFY_SOURCE

 - Increase kernel log buffer size

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-07-25 16:35:19 +09:30
Joel Stanley e11b64b1ef powerpc: Remove Power8 DD1 from cputable
This was added to support an early version of Power8 that did not have
working doorbells. These machines were not publicly available, and all of
the internal users have long since upgraded.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Michael Ellerman <[email protected]>
2018-07-12 21:08:09 +10:00
Joel Stanley 565b9937f4 clk: aspeed: Support HPLL strapping on ast2400
The HPLL can be configured through a register (SCU24), however some
platforms chose to configure it through the strapping settings and do
not use the register. This was not noticed as the logic for bit 18 in
SCU24 was confused: set means programmed, but the driver read it as set
means strapped.

This gives us the correct HPLL value on Palmetto systems, from which
most of the peripheral clocks are generated.

Fixes: 5eda5d79e4 ("clk: Add clock driver for ASPEED BMC SoCs")
Cc: [email protected] # v4.15
Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-07-11 09:34:25 -07:00
Joel Stanley 974c7c6d7b clk: aspeed: Mark bclk (PCIe) and dclk (VGA) as critical
This is used by the host to talk to the BMC's PCIe slave device. The BMC
is not involved, but the clock needs to be enabled so the host can use
the device.

Fixes: 15ed8ce5f8 ("clk: aspeed: Register gated clocks")
Cc: [email protected] # 4.15
Acked-by: Andrew Jeffery <[email protected]>
Tested-by: Lei YU <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-07-06 13:48:07 -07:00
Joel Stanley 746777012c pinctrl: aspeed: Fix documentation
Fixes these warnings:

  pinctrl-aspeed.c:112: warning: Function parameter or member 'map' not
  described in 'aspeed_sig_desc_eval'
  pinctrl-aspeed.c:112: warning: Excess function parameter 'regmap'
  description in 'aspeed_sig_desc_eval'

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
2018-06-28 16:13:12 +02:00
Joel Stanley 01a21986f8 MAINTAINERS: Add Sam as the maintainer for NCSI
Sam has been handing the maintenance of NCSI for a number release cycles
now.

Acked-by: Samuel Mendoza-Jonas <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2018-06-20 07:26:58 +09:00
Joel Stanley 6e42a3f5cd net/ncsi: Use netdev_dbg for debug messages
This moves all of the netdev_printk(KERN_DEBUG, ...) messages over to
netdev_dbg.

As Joe explains:

> netdev_dbg is not included in object code unless
> DEBUG is defined or CONFIG_DYNAMIC_DEBUG is set.
> And then, it is not emitted into the log unless
> DEBUG is set or this specific netdev_dbg is enabled
> via the dynamic debug control file.

Which is what we're after in this case.

Acked-by: Samuel Mendoza-Jonas <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2018-06-20 07:26:58 +09:00
Joel Stanley 5d3b146736 net/ncsi: Drop no more channels message
This does not provide useful information. As the ncsi maintainer said:

 > either we get a channel or broadcom has gone out to lunch

Acked-by: Samuel Mendoza-Jonas <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2018-06-20 07:26:58 +09:00
Joel Stanley 87975a0117 net/ncsi: Silence debug messages
In normal operation we see this series of messages as the host drives
the network device:

 ftgmac100 1e660000.ethernet eth0: NCSI: LSC AEN - channel 0 state down
 ftgmac100 1e660000.ethernet eth0: NCSI: suspending channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI: configuring channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI: channel 0 link down after config
 ftgmac100 1e660000.ethernet eth0: NCSI interface down
 ftgmac100 1e660000.ethernet eth0: NCSI: LSC AEN - channel 0 state up
 ftgmac100 1e660000.ethernet eth0: NCSI: configuring channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI interface up
 ftgmac100 1e660000.ethernet eth0: NCSI: LSC AEN - channel 0 state down
 ftgmac100 1e660000.ethernet eth0: NCSI: suspending channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI: configuring channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI: channel 0 link down after config
 ftgmac100 1e660000.ethernet eth0: NCSI interface down
 ftgmac100 1e660000.ethernet eth0: NCSI: LSC AEN - channel 0 state up
 ftgmac100 1e660000.ethernet eth0: NCSI: configuring channel 0
 ftgmac100 1e660000.ethernet eth0: NCSI interface up

This makes all of these messages netdev_dbg. They are still useful to
debug eg. misbehaving network device firmware, but we do not need them
filling up the kernel logs in normal operation.

Acked-by: Samuel Mendoza-Jonas <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2018-06-20 07:26:58 +09:00
Joel Stanley 11454d6dc8 fsi: core: Fix sparse warnings
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:210:9: warning: cast to restricted __be32
fsi-core.c:606:15: warning: incorrect type in assignment (different base types)
fsi-core.c:606:15:    expected unsigned int [unsigned] [assigned] [usertype] smode
fsi-core.c:606:15:    got restricted __be32 [usertype] <noident>
fsi-core.c:492:28: warning: expression using sizeof(void)
fsi-core.c:520:29: warning: expression using sizeof(void)
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:682:19: warning: cast to restricted __be32
fsi-core.c:706:24: warning: incorrect type in assignment (different base types)
fsi-core.c:706:24:    expected unsigned int [unsigned] [usertype] llmode
fsi-core.c:706:24:    got restricted __be32 [usertype] <noident>

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2018-06-18 14:33:56 +10:00
Joel Stanley fbdb5eac5c fsi: master-hub: Fix sparse warnings
fsi-master-hub.c:128:13: warning: incorrect type in assignment (different base types)
fsi-master-hub.c:128:13:    expected unsigned int [unsigned] [usertype] cmd
fsi-master-hub.c:128:13:    got restricted __be32 [usertype] <noident>
fsi-master-hub.c:208:13: warning: incorrect type in assignment (different base types)
fsi-master-hub.c:208:13:    expected restricted __be32 [addressable] [assigned] [usertype] reg
fsi-master-hub.c:208:13:    got int

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2018-06-18 14:33:56 +10:00
Joel Stanley 2992513877 fsi: sbefifo: Fix sparse warnings
fsi-sbefifo.c:547:58: warning: incorrect type in argument 2 (different base types)
fsi-sbefifo.c:547:58:    expected restricted __be32 [usertype] *word
fsi-sbefifo.c:547:58:    got unsigned int *<noident>
fsi-sbefifo.c:635:16: warning: incorrect type in assignment (different base types)
fsi-sbefifo.c:635:16:    expected unsigned int [unsigned] <noident>
fsi-sbefifo.c:635:16:    got restricted __be32 [usertype] <noident>
fsi-sbefifo.c:636:16: warning: incorrect type in assignment (different base types)
fsi-sbefifo.c:636:16:    expected unsigned int [unsigned] <noident>
fsi-sbefifo.c:636:16:    got restricted __be32 [usertype] <noident>

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Benjamin Herrenschmidt <[email protected]>
2018-06-18 14:33:56 +10:00
Joel Stanley 927c2fc2db ARM: dts: aspeed: Fix hwrng register address
The register address should be the full address of the rng, not the
offset from the start of the SCU.

Fixes: 5daa8212c0 ("ARM: dts: aspeed: Describe random number device")
Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Olof Johansson <[email protected]>
2018-06-02 01:18:53 -07:00
Joel Stanley dcb899c47d clk: aspeed: Support second reset register
The ast2500 has an additional reset register that contains resets not
present in the ast2400. This enables support for this register, and adds
the one reset line that is controlled by it.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-05-15 14:59:35 -07:00
Joel Stanley 5daa8212c0 ARM: dts: aspeed: Describe random number device
There is a random number generator that updates a register in the SCU
every second. This is compatible with the timeriomem rng driver in the
kernel.

From the timeriomem_rng bindings:

  quality: estimated number of bits of true entropy per 1024 bits read
  from the rng.  Defaults to zero which causes the kernel's default
  quality to be used instead.  Note that the default quality is usually
  zero which disables using this rng to automatically fill the kernel's
  entropy pool.

As to the recommended value for us to use:

 Rick Altherr <[email protected]> wrote:
 > Quality is #bit of entropy per 1000 bits read.  100 is a
 > conservative value that was suggested by those in the know.

Signed-off-by: Joel Stanley <[email protected]>
2018-04-30 14:21:29 +09:30
Joel Stanley cb799267bb MAINTAINERS: Update ASPEED entry with details
I am interested in all ASPEED drivers, and the previous match wasn't
grabbing files in nested directories. Use N instead.

Add the arm kernel mailing list so that patches get reviewed there, and
the linux-aspeed list which exists only so I can use patchwork to track
patches.

Add Andrew as a reviewer, because he is involved in reviewing ASPEED
stuff.

Signed-off-by: Joel Stanley <[email protected]>
Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2018-04-11 10:47:31 +02:00
Joel Stanley 975b7f0fe6 watchdog: Add Nuvoton NPCM watchdog driver
The Nuvoton NPCM750 has a watchdog implemented as a single register
inside the timer peripheral.

This driver exposes that watchdog as a standard watchdog device with
coarse timeout intervals, limited by the combination of prescaler and
counter that is provided by the hardware. The calculation is taken from
the Nuvoton vendor tree.

The watchdog is left running if a bootloader had it going. The rate is
the one specified in the device tree, or the default value (obtained
from the datasheet).

There is a pre-timeout IRQ that is wired up. This timeout always occurs
1024 clocks before the timeout.

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
Signed-off-by: Wim Van Sebroeck <[email protected]>
2018-03-24 10:19:39 +01:00
Joel Stanley 1daa85d13f dt-bindings: watchdog: Add Nuvoton NPCM description
These bindings describe the watchdog IP as used by the Nuvoton NPCM750
(Poleg) BMC SoC.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Guenter Roeck <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
Signed-off-by: Wim Van Sebroeck <[email protected]>
2018-03-24 10:19:38 +01:00
Joel Stanley 156383b190 Documentation: Mention why %p prints ptrval
When debugging recent kernels, people will see '(ptrval)' but there
isn't much information as to what that means. Briefly describe why it's
there.

Signed-off-by: Joel Stanley <[email protected]>
Acked-by: Tobin C. Harding <[email protected]>
Signed-off-by: Jonathan Corbet <[email protected]>
2018-03-23 12:42:18 -06:00
Joel Stanley f4d0290984 misc: aspeed-lpc-ctrl: Enable FWH and A2H bridge cycles
To date this driver has relied on prevous state from out of tree hacks
and vendor u-boot trees in order to have the host be able to access
data over the LPC bus.

Now we explicitly enable the AHB to LPC bridge and FWH cycles from when
the user first configures the address to map. We chose to do this then
as before that time there is no way for the kernel to know where it is
safe to point the LPC window.

Tested-by: Lei YU <[email protected]>
Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Cyril Bur <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-03-15 18:20:51 +01:00
Joel Stanley 99aad9e3a9 misc: aspeed-lpc: Request and enable LPC clock
The LPC device needs to ensure it's clock is enabled before it can do
anything.

In the past the clock was enabled and left running by u-boot, however
Linux now has an upstream clock driver that disables unused clocks.

Tested-by: Lei YU <[email protected]>
Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Cyril Bur <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-03-15 18:20:51 +01:00
Joel Stanley eb105eace9 dt-bindings: aspeed-lpc: Document LPC Host Interface Controller
The LPC Host Interface Controller is part of a BMC SoC that is used for
communication with the host.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-03-15 18:20:51 +01:00
Joel Stanley 9bdc00a5c1 ARM: dts: aspeed: Add default memory node
When we removed the inclusion of skeleton.dtsi from the device trees, we
broke booting for systems with bootloaders that aren't device tre aware.
This can be seen, for example, when appending the device tree blob to
the kernel image.

The reason booting broke was that the kernel lacked the device_type
label in the memory node. Add in a default memory node wth the
device_type. It can contain the memory address as the location is fixed
for each SoC generation, but the size needs to be added by the
bootloader or the board specific dts.

Fixes: 73102d6fdc ("ARM: dts: aspeed: Remove skeleton.dtsi")
Cc: <[email protected]>
Reported-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2018-03-14 10:05:28 +01:00
Joel Stanley 9739ae8459 ARM: dts: romulus: Remove MAX31785 device
Romulus uses ASPEED's fan tach instead of max31785:

     * Pass1's max31785 is always reset by CPLD
     * Pass2's max31785 is not connected

Signed-off-by: Lei YU <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-03-14 16:30:41 +10:30
Joel Stanley f597fbce38 serial: 8250: Add Nuvoton NPCM UART
The Nuvoton UART is almost compatible with the 8250 driver when probed
via the 8250_of driver, however it requires some extra configuration
at startup.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Cc: stable <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
2018-03-09 11:01:19 -08:00
Joel Stanley 3b47622a36 ARM: dts: palmetto: Enable rear UART
The Palmetto BMC has a UART connected to a RS-232 transceiver designed
to be used as a serial console for the host processor. It appears as a
D-sub connector on the back of the chassis.

Signed-off-by: Joel Stanley <[email protected]>
2018-03-08 16:52:03 +10:30
Joel Stanley fd2de0a731 ARM: dts: aspeed: Add LPC reset controller node
On both the ast2400 and ast2500 SoCs, the LPC reset controller is
required to bring the UARTs out of reset without waiting for the LPC
reset to be deasserted.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-21 14:53:28 +10:30
Joel Stanley 1d7592f84f reset: simple: Enable for ASPEED systems
ASPEED BMC SoCs have a reset controller in the LPC IP that can be
controlled using this driver to release the UARTs from reset.

No special configuration is required, so only the compatible string is
added.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Philipp Zabel <[email protected]>
2018-02-20 17:42:29 +01:00
Joel Stanley 14b5057a2f dt-bindings: aspeed-lpc: Add reset controller
This describes the reset controller present in the LPC address space.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
[[email protected]: removed a space before tab in indent]
Signed-off-by: Philipp Zabel <[email protected]>
2018-02-20 17:41:30 +01:00
Joel Stanley f4c3735456 ARM: dts: aspeed: Add Palmetto GPIO hogs
These hogs are for parts of the system that need to be in this state,
but do not yet have a driver associated with them but they must be
configured in order to successfully boot the host.

There are also some pinmux hogs, where the default mode of the IP block
is configured.

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:58 +10:30
Joel Stanley 65a33f0538 ARM: dts: palmetto: Add LEDs and GPIO keys
These describe the front panel LEDs that are present on a Palmetto
chassis, and the checkstop GPIO that comes from the Power8 CPU to
indicate a host error.

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:55 +10:30
Joel Stanley 7674bf96b8 ARM: dts: aspeed: Add LPC clock phandles
The LPC device uses LCLK.

Tested-by: Lei YU <[email protected]>
Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:53 +10:30
Joel Stanley 542d2f4588 ARM: dts: aspeed-g5: Update LPC node
This addresses some differences between the G5 and G4 LPC nodes that
make them hard to compare. There is no functional change.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:50 +10:30
Joel Stanley 347328110e ARM: dts: aspeed: Enable IPMI BT node on OpenPower machines
These BMC systems require this device to communicate with the host.

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:48 +10:30
Joel Stanley 75b310b770 ARM: dts: aspeed: Add IPMI BT node
The IPMI BT device part of the LPC interface and is used for
communication with the host processor.

Acked-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2018-02-19 17:59:46 +10:30
Joel Stanley f798983982 clk: aspeed: Add reset controller
There are some resets that are not associated with gates. These are
represented by a reset controller.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-01-26 16:22:46 -08:00
Joel Stanley 15ed8ce5f8 clk: aspeed: Register gated clocks
The majority of the clocks in the system are gates paired with a reset
controller that holds the IP in reset.

This borrows from clk_hw_register_gate, but registers two 'gates', one
to control the clock enable register and the other to control the reset
IP. This allows us to enforce the ordering:

 1. Place IP in reset
 2. Enable clock
 3. Delay
 4. Release reset

There are some gates that do not have an associated reset; these are
handled by using -1 as the index for the reset.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-01-26 16:22:45 -08:00
Joel Stanley 98f3118deb clk: aspeed: Add platform driver and register PLLs
This registers a platform driver to set up all of the non-core clocks.

The clocks that have configurable rates are now registered.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-01-26 16:22:43 -08:00
Joel Stanley 99d01e0ec3 clk: aspeed: Register core clocks
This registers the core clocks; those which are required to calculate
the rate of the timer peripheral so the system can load a clocksource
driver.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-01-26 16:22:41 -08:00
Joel Stanley 5eda5d79e4 clk: Add clock driver for ASPEED BMC SoCs
This adds the stub of a driver for the ASPEED SoCs. The clocks are
defined and the static registration is set up.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Benjamin Herrenschmidt <[email protected]>
Signed-off-by: Stephen Boyd <[email protected]>
2018-01-26 16:22:37 -08:00
Joel Stanley ce666d917b openrisc: Fix conflicting types for _exext and _stext
The printk tree in linux-next has a patch "symbol lookup: introduce
dereference_symbol_descriptor()" that includes sections.h in kallsyms.h,
so arch/openrisc/kernel/traps.c gets a second extern definition for
_etext and _stext.

Remove the local definitions and include sections.h directly in
preparation for the kallsyms.h change.

This fixes the following (future) build error:

  CC      arch/openrisc/kernel/traps.o
arch/openrisc/kernel/traps.c:43:13: error: conflicting types for ‘_etext’
 extern char _etext, _stext;
             ^
In file included from ./arch/openrisc/include/generated/asm/sections.h:1:0,
                 from ./include/linux/kallsyms.h:15,
                 from arch/openrisc/kernel/traps.c:35:
./include/asm-generic/sections.h:35:32: note: previous declaration of ‘_etext’ was here
 extern char _text[], _stext[], _etext[];
                                ^

Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Sergey Senozhatsky <[email protected]>
Acked-by: Stafford Horne <[email protected]>
Signed-off-by: Petr Mladek <[email protected]>
2018-01-09 10:40:02 +01:00
Joel 18c514cc0e hwmon: (aspeed-pwm-tacho) Deassert reset in probe
The ASPEED SoC must deassert a reset in order to use the PWM/tach
peripheral.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
2018-01-02 15:05:34 -08:00
Joel 8c9e527057 dt-bindings: hwmon: aspeed-pwm-tacho: Add reset node
The device tree bindings are updated to document the resets phandle, and
the example is updated to match what is expected for both the reset and
clock phandle.

Note that the bindings should have always had the reset controller, as
the hardware is unusable without it.

Acked-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
2018-01-02 15:05:34 -08:00
Joel Stanley d2271826e5 ARM: dts: aspeed-g4: Correct VUART IRQ number
This should have always been 8.

Fixes: db4d6d9d80 ("ARM: dts: aspeed: Correctly order UART nodes")
Cc: [email protected]
Signed-off-by: Joel Stanley <[email protected]>
Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
2017-12-21 16:27:04 +01:00
Joel Stanley 1696784eb7 tools/gpio: Fix build error with musl libc
The GPIO tools build fails when using a buildroot toolchain that uses musl
as it's C library:

arm-broomstick-linux-musleabi-gcc -Wp,-MD,./.gpio-event-mon.o.d \
 -Wp,-MT,gpio-event-mon.o -O2 -Wall -g -D_GNU_SOURCE \
 -Iinclude -D"BUILD_STR(s)=#s" -c -o gpio-event-mon.o gpio-event-mon.c
gpio-event-mon.c:30:6: error: unknown type name ‘u_int32_t’; did you mean ‘uint32_t’?
      u_int32_t handleflags,
      ^~~~~~~~~
      uint32_t

The glibc headers installed on my laptop include sys/types.h in
unistd.h, but it appears that musl does not.

Fixes: 97f69747d8 ("tools/gpio: add the gpio-event-mon tool")
Cc: [email protected]
Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Linus Walleij <[email protected]>
2017-12-21 13:51:01 +01:00
Joel Stanley e40ed27448 ARM: dts: aspeed-evb: Add unit name to memory node
Fixes a warning when building with W=1.

All of the ASPEED device trees build without warnings now.

Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:22 +10:30
Joel Stanley 236ffdfc31 ARM: dts: aspeed-plametto: Add flash layout and fix memory node
The OpenBMC flash layout is used by Palmetto systems.

Add the unit name to the memory node to fix a warning with W=1.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:21 +10:30
Joel Stanley 70c6351f71 ARM: dts: aspeed-romulus: Update Romulus system
- Fix incorrect RAM size
 - Remove alias; these are now specified in the dtsi
 - Add newly upstreamed devices
 - Include OpenBMC flash layout

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:21 +10:30
Joel Stanley 2e3de60a10 ARM: dts: aspeed: Add Witherspoon BMC machine
The Witherspoon BMC is an ASPEED ast2500 based BMC that is part of an
OpenPower Power9 server.

This adds the device tree description for most upstream components. It
is a squashed commit from the OpenBMC kernel tree.

Signed-off-by: Brandon Wyman <[email protected]>
Signed-off-by: Matt Spinler <[email protected]>
Signed-off-by: Brad Bishop <[email protected]>
Signed-off-by: Edward A. James <[email protected]>
Signed-off-by: Cédric Le Goater <[email protected]>
Signed-off-by: Andrew Jeffery <[email protected]>
Reviewed-by: Brandon Wyman <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:19 +10:30
Joel Stanley 8b42ae23ee ARM: dts: aspeed: Sort ASPEED entries in makefile
In preperation for adding more boards.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:19 +10:30
Joel Stanley 529022738c ARM: dts: Add OpenBMC flash layout
This is a layout used by OpenBMC systems. It describes the fixed flash
layout of a 32MB mtd device.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:19 +10:30
Joel Stanley eb323ad0ef ARM: dts: aspeed: Update license headers
In b24413180f ("License cleanup: add SPDX GPL-2.0 license identifier
to files with no license") these files had the GPL-2.0 licence added
automatically. Update them to be GPL 2.0+ in line with other IBM kernel
contributions.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:18 +10:30
Joel Stanley 73102d6fdc ARM: dts: aspeed: Remove skeleton.dtsi
We don't require it for any of the ASPEED systems.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:18 +10:30
Joel Stanley d558ce0ff0 ARM: dts: aspeed: Add LPC Snoop device
LPC snoop hardware on the ASPEED BMC, used for monitoring
host I/O port activity.

Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:17 +10:30
Joel Stanley 0734089f06 ARM: dts: aspeed: Add PWM and tachometer node
The PWM/tach unit has a clock and reset phandle. It needs both in order
to function correctly.

Signed-off-by: Joel Stanley <[email protected]>
--
v3:
 Add the pwm reset phandle
2017-12-21 14:03:17 +10:30
Joel Stanley 2528be7548 ARM: dts: aspeed: Add clock phandle to GPIO
This enables a feature where the driver can debounce inputs.

Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:16 +10:30
Joel Stanley e1e0ec419c ARM: dts: aspeed: Add flash controller clocks
Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:16 +10:30
Joel Stanley a563e192cc ARM: dts: aspeed: Add watchdog clocks
Reviewed-by: Cédric Le Goater <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:15 +10:30
Joel Stanley deb95c59bb ARM: dts: aspeed: Add MAC clocks
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:15 +10:30
Joel Stanley bb8155ada4 ARM: dts: aspeed: Add proper clock references
This device tree will break existing kernels that do not have the clk
patches applied (no clocksource, as we don't know the speed of the APB
clock.  You can boot if you pass a lpj value on the command line, but
won't have a uart).

Older device trees running with the newer kernel will function as well
as pre-4.16 kernels. That is, that some IP blocks (i2c, pwm/tach, adc)
will not work as the kernel lacks reset controller and clock enabling.

This is being changed as existing device trees use fixed-clocks in order
to boot without a clk driver. The newly added clk driver provides proper
clock support, including gating, so we move the device trees over to
properly request clocks.

The SCU compatible string is updated as the g4-scu string made it into
the tree before we decided on aspeed,astX000-<ip> as the format for the
strings. The old string will be removed from the bindings in a future
patch.

Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:14 +10:30
Joel Stanley a7d1ecb60a dt-bindings: gpio: Add ASPEED constants
These are used to by the device tree to map pin numbers to constants
required by the GPIO bindings.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:14 +10:30
Joel Stanley 70dad67ab1 dt-bindings: clock: Add ASPEED constants
These will be used by the clock driver and device trees.

Reviewed-by: Rob Herring <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-12-21 14:03:04 +10:30
Joel Stanley edf7550a1f iio: adc: aspeed: Deassert reset in probe
The ASPEED SoC must deassert a reset in order to use the ADC peripheral.

The device tree bindings are updated to document the resets phandle, and
the example is updated to match what is expected for both the reset and
clock phandle. Note that the bindings should have always had the reset
controller, as the hardware is unusable without it.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Jonathan Cameron <[email protected]>
2017-12-02 10:41:15 +00:00
Joel Stanley a52b04bcd2 virto_net: remove empty file 'virtio_net.'
Looks like this was mistakenly added to the tree as part of
commit 186b3c998c ("virtio-net: support XDP_REDIRECT").

Signed-off-by: Joel Stanley <[email protected]>
Acked-by: Jason Wang <[email protected]>
Acked-by: Michael S. Tsirkin <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2017-11-17 14:05:45 +09:00
Joel Stanley edd20e95bc i2c: aspeed: Deassert reset in probe
In order to use i2c from a cold boot, the i2c peripheral must be taken
out of reset. We request a shared reset controller each time a bus
driver is loaded, as the reset is shared between the 14 i2c buses.

On remove the reset is asserted, which only touches the hardware once
the last i2c bus is removed.

The reset is required as the I2C buses will not work without releasing
the reset. Previously the driver only worked with out of tree hacks
that released this reset before the driver was loaded. Update the
device tree bindings to reflect this.

Signed-off-by: Joel Stanley <[email protected]>
Acked-by: Rob Herring <[email protected]>
Signed-off-by: Wolfram Sang <[email protected]>
2017-11-06 19:15:31 +01:00
Joel 54b943e696 hwmon: (aspeed-pwm-tacho) Sort headers
Sort the headers in preperation for future changes.

Signed-off-by: Joel Stanley <[email protected]>
Signed-off-by: Guenter Roeck <[email protected]>
2017-11-04 11:09:34 -07:00
Joel Stanley 4b70c62b9e net: ftgmac100: Request clock and set speed
According to the ASPEED datasheet, gigabit speeds require a clock of
100MHz or higher. Other speeds require 25MHz or higher. This patch
configures a 100MHz clock if the system has a direct-attached
PHY, or 25MHz if the system is running NC-SI which is limited to 100MHz.

There appear to be no other upstream users of the FTGMAC100 driver it is
hard to know the clocking requirements of other platforms. Therefore a
conservative approach was taken with enabling clocks. If the platform is
not ASPEED, both requesting the clock and configuring the speed is
skipped.

Signed-off-by: Joel Stanley <[email protected]>
Tested-by: Andrew Jeffery <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
2017-10-18 12:09:06 +01:00
Joel Stanley cfc95173ba dt-bindings: aspeed-scu: Add clock and reset properties
Signed-off-by: Joel Stanley <[email protected]>
Acked-by: Rob Herring <[email protected]>
Signed-off-by: Lee Jones <[email protected]>
2017-10-13 10:42:58 +01:00
Joel Stanley 27b5e338d2 ARM: dts: aspeed-romulus: Enable VUART
Signed-off-by: Joel Stanley <[email protected]>
2017-10-05 16:30:13 +10:30
Joel Stanley efd56ec7a8 ARM: dts: aspeed-palmetto: Enable VUART
Signed-off-by: Joel Stanley <[email protected]>
2017-10-05 16:30:13 +10:30
Joel Stanley eb746e5342 ARM: dts: aspeed: Enable watchdog two
The second watchdog is left running by u-boot in the common
configurations of the firmware shipped on ASPEED boards. Ensure a driver
is loaded so the system can succcessfully boot.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-10-05 16:30:12 +10:30
Joel Stanley 424bd7e6c5 ARM: dts: aspeed: Remove undocumented wdt properties
The watchdog bindings do not describe an interrupt property nor clock
phandle, and the upstream driver never had code to use them. Drop them
from the device tree.

Also rename the node from wdt the more commonly used watchdog.

Reviewed-by: Andrew Jeffery <[email protected]>
Signed-off-by: Joel Stanley <[email protected]>
2017-10-05 16:30:12 +10:30