###############################################################################
#
#  <:copyright-BRCM:2016:proprietary:standard
#   
#     Broadcom Ltd. Proprietary and Confidential.(c) 2016 Broadcom Ltd.
#     All Rights Reserved
#   
#  This program is the proprietary software of Broadcom Ltd. and/or its
#  licensors, and may only be used, duplicated, modified or distributed pursuant
#  to the terms and conditions of a separate, written license agreement executed
#  between you and Broadcom Ltd. (an "Authorized License").  Except as set forth in
#  an Authorized License, Broadcom Ltd. grants no license (express or implied), right
#  to use, or waiver of any kind with respect to the Software, and Broadcom Ltd.
#  expressly reserves all rights in and to the Software and all intellectual
#  property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU HAVE
#  NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY NOTIFY
#  BROADCOM LTD AND DISCONTINUE ALL USE OF THE SOFTWARE.
#   
#  Except as expressly set forth in the Authorized License,
#   
#  1. This program, including its structure, sequence and organization,
#      constitutes the valuable trade secrets of Broadcom Ltd., and you shall use
#      all reasonable efforts to protect the confidentiality thereof, and to
#      use this information only in connection with your use of Broadcom Ltd.
#      integrated circuit products.
#   
#  2. TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
#      AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
#      WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH
#      RESPECT TO THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND
#      ALL IMPLIED WARRANTIES OF TITLE, MERCHANTABILITY, NONINFRINGEMENT,
#      FITNESS FOR A PARTICULAR PURPOSE, LACK OF VIRUSES, ACCURACY OR
#      COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION OR CORRESPONDENCE
#      TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF USE OR
#      PERFORMANCE OF THE SOFTWARE.
#   
#  3. TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR
#      ITS LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL,
#      INDIRECT, OR EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY
#      WAY RELATING TO YOUR USE OF OR INABILITY TO USE THE SOFTWARE EVEN
#      IF BROADCOM HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES;
#      OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT ACTUALLY PAID FOR THE
#      SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE LIMITATIONS
#      SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF ANY
#      LIMITED REMEDY.
#  :>
#
###############################################################################
 
# Commands required to enable all 16 PON ports on the MAPLE device

/board/trx_enable pon_id=0
/board/trx_enable pon_id=1
/board/trx_enable pon_id=2
/board/trx_enable pon_id=3
/board/trx_enable pon_id=4
/board/trx_enable pon_id=5
/board/trx_enable pon_id=6
/board/trx_enable pon_id=7
/board/trx_enable pon_id=8
/board/trx_enable pon_id=9
/board/trx_enable pon_id=10
/board/trx_enable pon_id=11
/board/trx_enable pon_id=12
/board/trx_enable pon_id=13
/board/trx_enable pon_id=14
/board/trx_enable pon_id=15
