linux/drivers/hwtracing/coresight/coresight-etm-cp14.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/*
   3 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
   4 */
   5
   6#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
   7
   8#include <linux/kernel.h>
   9#include <linux/types.h>
  10#include <linux/bug.h>
  11#include <asm/hardware/cp14.h>
  12
  13#include "coresight-etm.h"
  14
  15int etm_readl_cp14(u32 reg, unsigned int *val)
  16{
  17        switch (reg) {
  18        case ETMCR:
  19                *val = etm_read(ETMCR);
  20                return 0;
  21        case ETMCCR:
  22                *val = etm_read(ETMCCR);
  23                return 0;
  24        case ETMTRIGGER:
  25                *val = etm_read(ETMTRIGGER);
  26                return 0;
  27        case ETMSR:
  28                *val = etm_read(ETMSR);
  29                return 0;
  30        case ETMSCR:
  31                *val = etm_read(ETMSCR);
  32                return 0;
  33        case ETMTSSCR:
  34                *val = etm_read(ETMTSSCR);
  35                return 0;
  36        case ETMTEEVR:
  37                *val = etm_read(ETMTEEVR);
  38                return 0;
  39        case ETMTECR1:
  40                *val = etm_read(ETMTECR1);
  41                return 0;
  42        case ETMFFLR:
  43                *val = etm_read(ETMFFLR);
  44                return 0;
  45        case ETMACVRn(0):
  46                *val = etm_read(ETMACVR0);
  47                return 0;
  48        case ETMACVRn(1):
  49                *val = etm_read(ETMACVR1);
  50                return 0;
  51        case ETMACVRn(2):
  52                *val = etm_read(ETMACVR2);
  53                return 0;
  54        case ETMACVRn(3):
  55                *val = etm_read(ETMACVR3);
  56                return 0;
  57        case ETMACVRn(4):
  58                *val = etm_read(ETMACVR4);
  59                return 0;
  60        case ETMACVRn(5):
  61                *val = etm_read(ETMACVR5);
  62                return 0;
  63        case ETMACVRn(6):
  64                *val = etm_read(ETMACVR6);
  65                return 0;
  66        case ETMACVRn(7):
  67                *val = etm_read(ETMACVR7);
  68                return 0;
  69        case ETMACVRn(8):
  70                *val = etm_read(ETMACVR8);
  71                return 0;
  72        case ETMACVRn(9):
  73                *val = etm_read(ETMACVR9);
  74                return 0;
  75        case ETMACVRn(10):
  76                *val = etm_read(ETMACVR10);
  77                return 0;
  78        case ETMACVRn(11):
  79                *val = etm_read(ETMACVR11);
  80                return 0;
  81        case ETMACVRn(12):
  82                *val = etm_read(ETMACVR12);
  83                return 0;
  84        case ETMACVRn(13):
  85                *val = etm_read(ETMACVR13);
  86                return 0;
  87        case ETMACVRn(14):
  88                *val = etm_read(ETMACVR14);
  89                return 0;
  90        case ETMACVRn(15):
  91                *val = etm_read(ETMACVR15);
  92                return 0;
  93        case ETMACTRn(0):
  94                *val = etm_read(ETMACTR0);
  95                return 0;
  96        case ETMACTRn(1):
  97                *val = etm_read(ETMACTR1);
  98                return 0;
  99        case ETMACTRn(2):
 100                *val = etm_read(ETMACTR2);
 101                return 0;
 102        case ETMACTRn(3):
 103                *val = etm_read(ETMACTR3);
 104                return 0;
 105        case ETMACTRn(4):
 106                *val = etm_read(ETMACTR4);
 107                return 0;
 108        case ETMACTRn(5):
 109                *val = etm_read(ETMACTR5);
 110                return 0;
 111        case ETMACTRn(6):
 112                *val = etm_read(ETMACTR6);
 113                return 0;
 114        case ETMACTRn(7):
 115                *val = etm_read(ETMACTR7);
 116                return 0;
 117        case ETMACTRn(8):
 118                *val = etm_read(ETMACTR8);
 119                return 0;
 120        case ETMACTRn(9):
 121                *val = etm_read(ETMACTR9);
 122                return 0;
 123        case ETMACTRn(10):
 124                *val = etm_read(ETMACTR10);
 125                return 0;
 126        case ETMACTRn(11):
 127                *val = etm_read(ETMACTR11);
 128                return 0;
 129        case ETMACTRn(12):
 130                *val = etm_read(ETMACTR12);
 131                return 0;
 132        case ETMACTRn(13):
 133                *val = etm_read(ETMACTR13);
 134                return 0;
 135        case ETMACTRn(14):
 136                *val = etm_read(ETMACTR14);
 137                return 0;
 138        case ETMACTRn(15):
 139                *val = etm_read(ETMACTR15);
 140                return 0;
 141        case ETMCNTRLDVRn(0):
 142                *val = etm_read(ETMCNTRLDVR0);
 143                return 0;
 144        case ETMCNTRLDVRn(1):
 145                *val = etm_read(ETMCNTRLDVR1);
 146                return 0;
 147        case ETMCNTRLDVRn(2):
 148                *val = etm_read(ETMCNTRLDVR2);
 149                return 0;
 150        case ETMCNTRLDVRn(3):
 151                *val = etm_read(ETMCNTRLDVR3);
 152                return 0;
 153        case ETMCNTENRn(0):
 154                *val = etm_read(ETMCNTENR0);
 155                return 0;
 156        case ETMCNTENRn(1):
 157                *val = etm_read(ETMCNTENR1);
 158                return 0;
 159        case ETMCNTENRn(2):
 160                *val = etm_read(ETMCNTENR2);
 161                return 0;
 162        case ETMCNTENRn(3):
 163                *val = etm_read(ETMCNTENR3);
 164                return 0;
 165        case ETMCNTRLDEVRn(0):
 166                *val = etm_read(ETMCNTRLDEVR0);
 167                return 0;
 168        case ETMCNTRLDEVRn(1):
 169                *val = etm_read(ETMCNTRLDEVR1);
 170                return 0;
 171        case ETMCNTRLDEVRn(2):
 172                *val = etm_read(ETMCNTRLDEVR2);
 173                return 0;
 174        case ETMCNTRLDEVRn(3):
 175                *val = etm_read(ETMCNTRLDEVR3);
 176                return 0;
 177        case ETMCNTVRn(0):
 178                *val = etm_read(ETMCNTVR0);
 179                return 0;
 180        case ETMCNTVRn(1):
 181                *val = etm_read(ETMCNTVR1);
 182                return 0;
 183        case ETMCNTVRn(2):
 184                *val = etm_read(ETMCNTVR2);
 185                return 0;
 186        case ETMCNTVRn(3):
 187                *val = etm_read(ETMCNTVR3);
 188                return 0;
 189        case ETMSQ12EVR:
 190                *val = etm_read(ETMSQ12EVR);
 191                return 0;
 192        case ETMSQ21EVR:
 193                *val = etm_read(ETMSQ21EVR);
 194                return 0;
 195        case ETMSQ23EVR:
 196                *val = etm_read(ETMSQ23EVR);
 197                return 0;
 198        case ETMSQ31EVR:
 199                *val = etm_read(ETMSQ31EVR);
 200                return 0;
 201        case ETMSQ32EVR:
 202                *val = etm_read(ETMSQ32EVR);
 203                return 0;
 204        case ETMSQ13EVR:
 205                *val = etm_read(ETMSQ13EVR);
 206                return 0;
 207        case ETMSQR:
 208                *val = etm_read(ETMSQR);
 209                return 0;
 210        case ETMEXTOUTEVRn(0):
 211                *val = etm_read(ETMEXTOUTEVR0);
 212                return 0;
 213        case ETMEXTOUTEVRn(1):
 214                *val = etm_read(ETMEXTOUTEVR1);
 215                return 0;
 216        case ETMEXTOUTEVRn(2):
 217                *val = etm_read(ETMEXTOUTEVR2);
 218                return 0;
 219        case ETMEXTOUTEVRn(3):
 220                *val = etm_read(ETMEXTOUTEVR3);
 221                return 0;
 222        case ETMCIDCVRn(0):
 223                *val = etm_read(ETMCIDCVR0);
 224                return 0;
 225        case ETMCIDCVRn(1):
 226                *val = etm_read(ETMCIDCVR1);
 227                return 0;
 228        case ETMCIDCVRn(2):
 229                *val = etm_read(ETMCIDCVR2);
 230                return 0;
 231        case ETMCIDCMR:
 232                *val = etm_read(ETMCIDCMR);
 233                return 0;
 234        case ETMIMPSPEC0:
 235                *val = etm_read(ETMIMPSPEC0);
 236                return 0;
 237        case ETMIMPSPEC1:
 238                *val = etm_read(ETMIMPSPEC1);
 239                return 0;
 240        case ETMIMPSPEC2:
 241                *val = etm_read(ETMIMPSPEC2);
 242                return 0;
 243        case ETMIMPSPEC3:
 244                *val = etm_read(ETMIMPSPEC3);
 245                return 0;
 246        case ETMIMPSPEC4:
 247                *val = etm_read(ETMIMPSPEC4);
 248                return 0;
 249        case ETMIMPSPEC5:
 250                *val = etm_read(ETMIMPSPEC5);
 251                return 0;
 252        case ETMIMPSPEC6:
 253                *val = etm_read(ETMIMPSPEC6);
 254                return 0;
 255        case ETMIMPSPEC7:
 256                *val = etm_read(ETMIMPSPEC7);
 257                return 0;
 258        case ETMSYNCFR:
 259                *val = etm_read(ETMSYNCFR);
 260                return 0;
 261        case ETMIDR:
 262                *val = etm_read(ETMIDR);
 263                return 0;
 264        case ETMCCER:
 265                *val = etm_read(ETMCCER);
 266                return 0;
 267        case ETMEXTINSELR:
 268                *val = etm_read(ETMEXTINSELR);
 269                return 0;
 270        case ETMTESSEICR:
 271                *val = etm_read(ETMTESSEICR);
 272                return 0;
 273        case ETMEIBCR:
 274                *val = etm_read(ETMEIBCR);
 275                return 0;
 276        case ETMTSEVR:
 277                *val = etm_read(ETMTSEVR);
 278                return 0;
 279        case ETMAUXCR:
 280                *val = etm_read(ETMAUXCR);
 281                return 0;
 282        case ETMTRACEIDR:
 283                *val = etm_read(ETMTRACEIDR);
 284                return 0;
 285        case ETMVMIDCVR:
 286                *val = etm_read(ETMVMIDCVR);
 287                return 0;
 288        case ETMOSLSR:
 289                *val = etm_read(ETMOSLSR);
 290                return 0;
 291        case ETMOSSRR:
 292                *val = etm_read(ETMOSSRR);
 293                return 0;
 294        case ETMPDCR:
 295                *val = etm_read(ETMPDCR);
 296                return 0;
 297        case ETMPDSR:
 298                *val = etm_read(ETMPDSR);
 299                return 0;
 300        default:
 301                *val = 0;
 302                return -EINVAL;
 303        }
 304}
 305
 306int etm_writel_cp14(u32 reg, u32 val)
 307{
 308        switch (reg) {
 309        case ETMCR:
 310                etm_write(val, ETMCR);
 311                break;
 312        case ETMTRIGGER:
 313                etm_write(val, ETMTRIGGER);
 314                break;
 315        case ETMSR:
 316                etm_write(val, ETMSR);
 317                break;
 318        case ETMTSSCR:
 319                etm_write(val, ETMTSSCR);
 320                break;
 321        case ETMTEEVR:
 322                etm_write(val, ETMTEEVR);
 323                break;
 324        case ETMTECR1:
 325                etm_write(val, ETMTECR1);
 326                break;
 327        case ETMFFLR:
 328                etm_write(val, ETMFFLR);
 329                break;
 330        case ETMACVRn(0):
 331                etm_write(val, ETMACVR0);
 332                break;
 333        case ETMACVRn(1):
 334                etm_write(val, ETMACVR1);
 335                break;
 336        case ETMACVRn(2):
 337                etm_write(val, ETMACVR2);
 338                break;
 339        case ETMACVRn(3):
 340                etm_write(val, ETMACVR3);
 341                break;
 342        case ETMACVRn(4):
 343                etm_write(val, ETMACVR4);
 344                break;
 345        case ETMACVRn(5):
 346                etm_write(val, ETMACVR5);
 347                break;
 348        case ETMACVRn(6):
 349                etm_write(val, ETMACVR6);
 350                break;
 351        case ETMACVRn(7):
 352                etm_write(val, ETMACVR7);
 353                break;
 354        case ETMACVRn(8):
 355                etm_write(val, ETMACVR8);
 356                break;
 357        case ETMACVRn(9):
 358                etm_write(val, ETMACVR9);
 359                break;
 360        case ETMACVRn(10):
 361                etm_write(val, ETMACVR10);
 362                break;
 363        case ETMACVRn(11):
 364                etm_write(val, ETMACVR11);
 365                break;
 366        case ETMACVRn(12):
 367                etm_write(val, ETMACVR12);
 368                break;
 369        case ETMACVRn(13):
 370                etm_write(val, ETMACVR13);
 371                break;
 372        case ETMACVRn(14):
 373                etm_write(val, ETMACVR14);
 374                break;
 375        case ETMACVRn(15):
 376                etm_write(val, ETMACVR15);
 377                break;
 378        case ETMACTRn(0):
 379                etm_write(val, ETMACTR0);
 380                break;
 381        case ETMACTRn(1):
 382                etm_write(val, ETMACTR1);
 383                break;
 384        case ETMACTRn(2):
 385                etm_write(val, ETMACTR2);
 386                break;
 387        case ETMACTRn(3):
 388                etm_write(val, ETMACTR3);
 389                break;
 390        case ETMACTRn(4):
 391                etm_write(val, ETMACTR4);
 392                break;
 393        case ETMACTRn(5):
 394                etm_write(val, ETMACTR5);
 395                break;
 396        case ETMACTRn(6):
 397                etm_write(val, ETMACTR6);
 398                break;
 399        case ETMACTRn(7):
 400                etm_write(val, ETMACTR7);
 401                break;
 402        case ETMACTRn(8):
 403                etm_write(val, ETMACTR8);
 404                break;
 405        case ETMACTRn(9):
 406                etm_write(val, ETMACTR9);
 407                break;
 408        case ETMACTRn(10):
 409                etm_write(val, ETMACTR10);
 410                break;
 411        case ETMACTRn(11):
 412                etm_write(val, ETMACTR11);
 413                break;
 414        case ETMACTRn(12):
 415                etm_write(val, ETMACTR12);
 416                break;
 417        case ETMACTRn(13):
 418                etm_write(val, ETMACTR13);
 419                break;
 420        case ETMACTRn(14):
 421                etm_write(val, ETMACTR14);
 422                break;
 423        case ETMACTRn(15):
 424                etm_write(val, ETMACTR15);
 425                break;
 426        case ETMCNTRLDVRn(0):
 427                etm_write(val, ETMCNTRLDVR0);
 428                break;
 429        case ETMCNTRLDVRn(1):
 430                etm_write(val, ETMCNTRLDVR1);
 431                break;
 432        case ETMCNTRLDVRn(2):
 433                etm_write(val, ETMCNTRLDVR2);
 434                break;
 435        case ETMCNTRLDVRn(3):
 436                etm_write(val, ETMCNTRLDVR3);
 437                break;
 438        case ETMCNTENRn(0):
 439                etm_write(val, ETMCNTENR0);
 440                break;
 441        case ETMCNTENRn(1):
 442                etm_write(val, ETMCNTENR1);
 443                break;
 444        case ETMCNTENRn(2):
 445                etm_write(val, ETMCNTENR2);
 446                break;
 447        case ETMCNTENRn(3):
 448                etm_write(val, ETMCNTENR3);
 449                break;
 450        case ETMCNTRLDEVRn(0):
 451                etm_write(val, ETMCNTRLDEVR0);
 452                break;
 453        case ETMCNTRLDEVRn(1):
 454                etm_write(val, ETMCNTRLDEVR1);
 455                break;
 456        case ETMCNTRLDEVRn(2):
 457                etm_write(val, ETMCNTRLDEVR2);
 458                break;
 459        case ETMCNTRLDEVRn(3):
 460                etm_write(val, ETMCNTRLDEVR3);
 461                break;
 462        case ETMCNTVRn(0):
 463                etm_write(val, ETMCNTVR0);
 464                break;
 465        case ETMCNTVRn(1):
 466                etm_write(val, ETMCNTVR1);
 467                break;
 468        case ETMCNTVRn(2):
 469                etm_write(val, ETMCNTVR2);
 470                break;
 471        case ETMCNTVRn(3):
 472                etm_write(val, ETMCNTVR3);
 473                break;
 474        case ETMSQ12EVR:
 475                etm_write(val, ETMSQ12EVR);
 476                break;
 477        case ETMSQ21EVR:
 478                etm_write(val, ETMSQ21EVR);
 479                break;
 480        case ETMSQ23EVR:
 481                etm_write(val, ETMSQ23EVR);
 482                break;
 483        case ETMSQ31EVR:
 484                etm_write(val, ETMSQ31EVR);
 485                break;
 486        case ETMSQ32EVR:
 487                etm_write(val, ETMSQ32EVR);
 488                break;
 489        case ETMSQ13EVR:
 490                etm_write(val, ETMSQ13EVR);
 491                break;
 492        case ETMSQR:
 493                etm_write(val, ETMSQR);
 494                break;
 495        case ETMEXTOUTEVRn(0):
 496                etm_write(val, ETMEXTOUTEVR0);
 497                break;
 498        case ETMEXTOUTEVRn(1):
 499                etm_write(val, ETMEXTOUTEVR1);
 500                break;
 501        case ETMEXTOUTEVRn(2):
 502                etm_write(val, ETMEXTOUTEVR2);
 503                break;
 504        case ETMEXTOUTEVRn(3):
 505                etm_write(val, ETMEXTOUTEVR3);
 506                break;
 507        case ETMCIDCVRn(0):
 508                etm_write(val, ETMCIDCVR0);
 509                break;
 510        case ETMCIDCVRn(1):
 511                etm_write(val, ETMCIDCVR1);
 512                break;
 513        case ETMCIDCVRn(2):
 514                etm_write(val, ETMCIDCVR2);
 515                break;
 516        case ETMCIDCMR:
 517                etm_write(val, ETMCIDCMR);
 518                break;
 519        case ETMIMPSPEC0:
 520                etm_write(val, ETMIMPSPEC0);
 521                break;
 522        case ETMIMPSPEC1:
 523                etm_write(val, ETMIMPSPEC1);
 524                break;
 525        case ETMIMPSPEC2:
 526                etm_write(val, ETMIMPSPEC2);
 527                break;
 528        case ETMIMPSPEC3:
 529                etm_write(val, ETMIMPSPEC3);
 530                break;
 531        case ETMIMPSPEC4:
 532                etm_write(val, ETMIMPSPEC4);
 533                break;
 534        case ETMIMPSPEC5:
 535                etm_write(val, ETMIMPSPEC5);
 536                break;
 537        case ETMIMPSPEC6:
 538                etm_write(val, ETMIMPSPEC6);
 539                break;
 540        case ETMIMPSPEC7:
 541                etm_write(val, ETMIMPSPEC7);
 542                break;
 543        case ETMSYNCFR:
 544                etm_write(val, ETMSYNCFR);
 545                break;
 546        case ETMEXTINSELR:
 547                etm_write(val, ETMEXTINSELR);
 548                break;
 549        case ETMTESSEICR:
 550                etm_write(val, ETMTESSEICR);
 551                break;
 552        case ETMEIBCR:
 553                etm_write(val, ETMEIBCR);
 554                break;
 555        case ETMTSEVR:
 556                etm_write(val, ETMTSEVR);
 557                break;
 558        case ETMAUXCR:
 559                etm_write(val, ETMAUXCR);
 560                break;
 561        case ETMTRACEIDR:
 562                etm_write(val, ETMTRACEIDR);
 563                break;
 564        case ETMVMIDCVR:
 565                etm_write(val, ETMVMIDCVR);
 566                break;
 567        case ETMOSLAR:
 568                etm_write(val, ETMOSLAR);
 569                break;
 570        case ETMOSSRR:
 571                etm_write(val, ETMOSSRR);
 572                break;
 573        case ETMPDCR:
 574                etm_write(val, ETMPDCR);
 575                break;
 576        case ETMPDSR:
 577                etm_write(val, ETMPDSR);
 578                break;
 579        default:
 580                return -EINVAL;
 581        }
 582
 583        return 0;
 584}
 585