1*c66ec88fSEmmanuel VadotARM MHU Mailbox Driver 2*c66ec88fSEmmanuel Vadot====================== 3*c66ec88fSEmmanuel Vadot 4*c66ec88fSEmmanuel VadotThe ARM's Message-Handling-Unit (MHU) is a mailbox controller that has 5*c66ec88fSEmmanuel Vadot3 independent channels/links to communicate with remote processor(s). 6*c66ec88fSEmmanuel Vadot MHU links are hardwired on a platform. A link raises interrupt for any 7*c66ec88fSEmmanuel Vadotreceived data. However, there is no specified way of knowing if the sent 8*c66ec88fSEmmanuel Vadotdata has been read by the remote. This driver assumes the sender polls 9*c66ec88fSEmmanuel VadotSTAT register and the remote clears it after having read the data. 10*c66ec88fSEmmanuel VadotThe last channel is specified to be a 'Secure' resource, hence can't be 11*c66ec88fSEmmanuel Vadotused by Linux running NS. 12*c66ec88fSEmmanuel Vadot 13*c66ec88fSEmmanuel VadotMailbox Device Node: 14*c66ec88fSEmmanuel Vadot==================== 15*c66ec88fSEmmanuel Vadot 16*c66ec88fSEmmanuel VadotRequired properties: 17*c66ec88fSEmmanuel Vadot-------------------- 18*c66ec88fSEmmanuel Vadot- compatible: Shall be "arm,mhu" & "arm,primecell" 19*c66ec88fSEmmanuel Vadot- reg: Contains the mailbox register address range (base 20*c66ec88fSEmmanuel Vadot address and length) 21*c66ec88fSEmmanuel Vadot- #mbox-cells Shall be 1 - the index of the channel needed. 22*c66ec88fSEmmanuel Vadot- interrupts: Contains the interrupt information corresponding to 23*c66ec88fSEmmanuel Vadot each of the 3 links of MHU. 24*c66ec88fSEmmanuel Vadot 25*c66ec88fSEmmanuel VadotExample: 26*c66ec88fSEmmanuel Vadot-------- 27*c66ec88fSEmmanuel Vadot 28*c66ec88fSEmmanuel Vadot mhu: mailbox@2b1f0000 { 29*c66ec88fSEmmanuel Vadot #mbox-cells = <1>; 30*c66ec88fSEmmanuel Vadot compatible = "arm,mhu", "arm,primecell"; 31*c66ec88fSEmmanuel Vadot reg = <0 0x2b1f0000 0x1000>; 32*c66ec88fSEmmanuel Vadot interrupts = <0 36 4>, /* LP-NonSecure */ 33*c66ec88fSEmmanuel Vadot <0 35 4>, /* HP-NonSecure */ 34*c66ec88fSEmmanuel Vadot <0 37 4>; /* Secure */ 35*c66ec88fSEmmanuel Vadot clocks = <&clock 0 2 1>; 36*c66ec88fSEmmanuel Vadot clock-names = "apb_pclk"; 37*c66ec88fSEmmanuel Vadot }; 38*c66ec88fSEmmanuel Vadot 39*c66ec88fSEmmanuel Vadot mhu_client: scb@2e000000 { 40*c66ec88fSEmmanuel Vadot compatible = "fujitsu,mb86s70-scb-1.0"; 41*c66ec88fSEmmanuel Vadot reg = <0 0x2e000000 0x4000>; 42*c66ec88fSEmmanuel Vadot mboxes = <&mhu 1>; /* HP-NonSecure */ 43*c66ec88fSEmmanuel Vadot }; 44